{
  "cells": [
    {
      "cell_type": "code",
      "execution_count": 1,
      "metadata": {
        "id": "UPiaiebnCYov"
      },
      "outputs": [],
      "source": [
        "# == Hyperparameter configuration ==\n",
        "\n",
        "# Official scored labels Physionet 2021: https://github.com/physionetchallenges/evaluation-2021/blob/main/dx_mapping_scored.csv\n",
        "\n",
        "# 0 = 426783006 -> sinus rhythm (SR)\n",
        "# 1 = 164889003 -> atrial fibrillation (AF)\n",
        "# 2 = 164890007 -> atrial flutter (AFL)\n",
        "# 3 = 284470004 or 63593006 -> premature atrial contraction (PAC) or supraventricular premature beats (SVPB)\n",
        "# 4 = 427172004 or 17338001 -> premature ventricular contractions (PVC), ventricular premature beats (VPB)\n",
        "# 5 = 6374002 -> bundle branch block (BBB)\n",
        "# 6 = 426627000 -> bradycardia (Brady)\n",
        "# 7 = 733534002 or 164909002 -> complete left bundle branch block (CLBBB), left bundle branch block (LBBB)\n",
        "# 8 = 713427006 or 59118001 -> complete right bundle branch block (CRBBB), right bundle branch block (RBBB)\n",
        "# 9 = 270492004 -> 1st degree av block (IAVB)\n",
        "# 10 = 713426002 -> incomplete right bundle branch block (IRBBB)\n",
        "# 11 = 39732003 -> left axis deviation (LAD)\n",
        "# 12 = 445118002 -> left anterior fascicular block (LAnFB)\n",
        "# 13 = 251146004 -> low qrs voltages (LQRSV)\n",
        "# 14 = 698252002 -> nonspecific intraventricular conduction disorder (NSIVCB)\n",
        "# 15 = 10370003 -> pacing rhythm (PR)\n",
        "# 16 = 365413008 -> poor R wave Progression (PRWP)\n",
        "# 17 = 164947007 -> prolonged pr interval (LPR)\n",
        "# 18 = 111975006 -> prolonged qt interval (LQT)\n",
        "# 19 = 164917005 -> qwave abnormal (QAb)\n",
        "# 20 = 47665007 -> right axis deviation (RAD)\n",
        "# 21 = 427393009 -> sinus arrhythmia (SA)\n",
        "# 22 = 426177001 -> sinus bradycardia (SB)\n",
        "# 23 = 427084000 -> sinus tachycardia (STach)\n",
        "# 24 = 164934002 -> t wave abnormal (TAb)\n",
        "# 25 = 59931005 -> t wave inversion (TInv)\n",
        "\n",
        "VALID_LABELS = set(\n",
        "    [\n",
        "        \"164889003\",\n",
        "        \"164890007\",\n",
        "        \"6374002\",\n",
        "        \"426627000\",\n",
        "        \"733534002\",\n",
        "        \"713427006\",\n",
        "        \"270492004\",\n",
        "        \"713426002\",\n",
        "        \"39732003\",\n",
        "        \"445118002\",\n",
        "        \"164909002\",\n",
        "        \"251146004\",\n",
        "        \"698252002\",\n",
        "        \"426783006\",\n",
        "        \"284470004\",\n",
        "        \"10370003\",\n",
        "        \"365413008\",\n",
        "        \"427172004\",\n",
        "        \"164947007\",\n",
        "        \"111975006\",\n",
        "        \"164917005\",\n",
        "        \"47665007\",\n",
        "        \"59118001\",\n",
        "        \"427393009\",\n",
        "        \"426177001\",\n",
        "        \"427084000\",\n",
        "        \"63593006\",\n",
        "        \"164934002\",\n",
        "        \"59931005\",\n",
        "        \"17338001\",\n",
        "    ]\n",
        ")\n",
        "# VALID_LABELS = set([\"426783006\", \"164889003\", \"164890007\", \"284470004\", \"427172004\"]) # SR, AF, AFL, PAC, PVC\n",
        "NUM_CLASSES =  26\n",
        "\n",
        "CLASS_BALANCE = 6000 # imblearn undersampling & imblearn oversampling\n",
        "TEST_BALANCE = 100 # imblearn undersampling\n",
        "TRAIN_TEST_SPLIT = 0.8\n",
        "VALIDATION_SPLIT = 0.25\n",
        "\n",
        "EPOCHS = 500\n",
        "LEARNING_RATE = 0.001\n",
        "BATCH_SIZE = 128"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 2,
      "metadata": {
        "id": "68ZDikRKCZ6_",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "080b3a57-3d1c-43c6-818e-1f481a734f31"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Sat Jun 22 16:29:37 2024       \n",
            "+---------------------------------------------------------------------------------------+\n",
            "| NVIDIA-SMI 535.104.05             Driver Version: 535.104.05   CUDA Version: 12.2     |\n",
            "|-----------------------------------------+----------------------+----------------------+\n",
            "| GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |\n",
            "| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |\n",
            "|                                         |                      |               MIG M. |\n",
            "|=========================================+======================+======================|\n",
            "|   0  Tesla T4                       Off | 00000000:00:04.0 Off |                    0 |\n",
            "| N/A   49C    P8              11W /  70W |      0MiB / 15360MiB |      0%      Default |\n",
            "|                                         |                      |                  N/A |\n",
            "+-----------------------------------------+----------------------+----------------------+\n",
            "                                                                                         \n",
            "+---------------------------------------------------------------------------------------+\n",
            "| Processes:                                                                            |\n",
            "|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |\n",
            "|        ID   ID                                                             Usage      |\n",
            "|=======================================================================================|\n",
            "|  No running processes found                                                           |\n",
            "+---------------------------------------------------------------------------------------+\n"
          ]
        }
      ],
      "source": [
        "# == Check if GPU is available ==\n",
        "\n",
        "!nvidia-smi"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 3,
      "metadata": {
        "id": "fEnUK8J5zqBe",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "33d51049-5155-415c-f54b-48429b75bbfa"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Requirement already satisfied: google-colab in /usr/local/lib/python3.10/dist-packages (1.0.0)\n",
            "Requirement already satisfied: google-auth==2.27.0 in /usr/local/lib/python3.10/dist-packages (from google-colab) (2.27.0)\n",
            "Requirement already satisfied: ipykernel==5.5.6 in /usr/local/lib/python3.10/dist-packages (from google-colab) (5.5.6)\n",
            "Requirement already satisfied: ipython==7.34.0 in /usr/local/lib/python3.10/dist-packages (from google-colab) (7.34.0)\n",
            "Requirement already satisfied: notebook==6.5.5 in /usr/local/lib/python3.10/dist-packages (from google-colab) (6.5.5)\n",
            "Requirement already satisfied: pandas==2.0.3 in /usr/local/lib/python3.10/dist-packages (from google-colab) (2.0.3)\n",
            "Requirement already satisfied: portpicker==1.5.2 in /usr/local/lib/python3.10/dist-packages (from google-colab) (1.5.2)\n",
            "Requirement already satisfied: requests==2.31.0 in /usr/local/lib/python3.10/dist-packages (from google-colab) (2.31.0)\n",
            "Requirement already satisfied: tornado==6.3.3 in /usr/local/lib/python3.10/dist-packages (from google-colab) (6.3.3)\n",
            "Requirement already satisfied: cachetools<6.0,>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from google-auth==2.27.0->google-colab) (5.3.3)\n",
            "Requirement already satisfied: pyasn1-modules>=0.2.1 in /usr/local/lib/python3.10/dist-packages (from google-auth==2.27.0->google-colab) (0.4.0)\n",
            "Requirement already satisfied: rsa<5,>=3.1.4 in /usr/local/lib/python3.10/dist-packages (from google-auth==2.27.0->google-colab) (4.9)\n",
            "Requirement already satisfied: ipython-genutils in /usr/local/lib/python3.10/dist-packages (from ipykernel==5.5.6->google-colab) (0.2.0)\n",
            "Requirement already satisfied: traitlets>=4.1.0 in /usr/local/lib/python3.10/dist-packages (from ipykernel==5.5.6->google-colab) (5.7.1)\n",
            "Requirement already satisfied: jupyter-client in /usr/local/lib/python3.10/dist-packages (from ipykernel==5.5.6->google-colab) (6.1.12)\n",
            "Requirement already satisfied: setuptools>=18.5 in /usr/local/lib/python3.10/dist-packages (from ipython==7.34.0->google-colab) (67.7.2)\n",
            "Collecting jedi>=0.16 (from ipython==7.34.0->google-colab)\n",
            "  Downloading jedi-0.19.1-py2.py3-none-any.whl (1.6 MB)\n",
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.6/1.6 MB\u001b[0m \u001b[31m28.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
            "\u001b[?25hRequirement already satisfied: decorator in /usr/local/lib/python3.10/dist-packages (from ipython==7.34.0->google-colab) (4.4.2)\n",
            "Requirement already satisfied: pickleshare in /usr/local/lib/python3.10/dist-packages (from ipython==7.34.0->google-colab) (0.7.5)\n",
            "Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from ipython==7.34.0->google-colab) (3.0.47)\n",
            "Requirement already satisfied: pygments in /usr/local/lib/python3.10/dist-packages (from ipython==7.34.0->google-colab) (2.16.1)\n",
            "Requirement already satisfied: backcall in /usr/local/lib/python3.10/dist-packages (from ipython==7.34.0->google-colab) (0.2.0)\n",
            "Requirement already satisfied: matplotlib-inline in /usr/local/lib/python3.10/dist-packages (from ipython==7.34.0->google-colab) (0.1.7)\n",
            "Requirement already satisfied: pexpect>4.3 in /usr/local/lib/python3.10/dist-packages (from ipython==7.34.0->google-colab) (4.9.0)\n",
            "Requirement already satisfied: jinja2 in /usr/local/lib/python3.10/dist-packages (from notebook==6.5.5->google-colab) (3.1.4)\n",
            "Requirement already satisfied: pyzmq<25,>=17 in /usr/local/lib/python3.10/dist-packages (from notebook==6.5.5->google-colab) (24.0.1)\n",
            "Requirement already satisfied: argon2-cffi in /usr/local/lib/python3.10/dist-packages (from notebook==6.5.5->google-colab) (23.1.0)\n",
            "Requirement already satisfied: jupyter-core>=4.6.1 in /usr/local/lib/python3.10/dist-packages (from notebook==6.5.5->google-colab) (5.7.2)\n",
            "Requirement already satisfied: nbformat in /usr/local/lib/python3.10/dist-packages (from notebook==6.5.5->google-colab) (5.10.4)\n",
            "Requirement already satisfied: nbconvert>=5 in /usr/local/lib/python3.10/dist-packages (from notebook==6.5.5->google-colab) (6.5.4)\n",
            "Requirement already satisfied: nest-asyncio>=1.5 in /usr/local/lib/python3.10/dist-packages (from notebook==6.5.5->google-colab) (1.6.0)\n",
            "Requirement already satisfied: Send2Trash>=1.8.0 in /usr/local/lib/python3.10/dist-packages (from notebook==6.5.5->google-colab) (1.8.3)\n",
            "Requirement already satisfied: terminado>=0.8.3 in /usr/local/lib/python3.10/dist-packages (from notebook==6.5.5->google-colab) (0.18.1)\n",
            "Requirement already satisfied: prometheus-client in /usr/local/lib/python3.10/dist-packages (from notebook==6.5.5->google-colab) (0.20.0)\n",
            "Requirement already satisfied: nbclassic>=0.4.7 in /usr/local/lib/python3.10/dist-packages (from notebook==6.5.5->google-colab) (1.1.0)\n",
            "Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.10/dist-packages (from pandas==2.0.3->google-colab) (2.8.2)\n",
            "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas==2.0.3->google-colab) (2023.4)\n",
            "Requirement already satisfied: tzdata>=2022.1 in /usr/local/lib/python3.10/dist-packages (from pandas==2.0.3->google-colab) (2024.1)\n",
            "Requirement already satisfied: numpy>=1.21.0 in /usr/local/lib/python3.10/dist-packages (from pandas==2.0.3->google-colab) (1.25.2)\n",
            "Requirement already satisfied: psutil in /usr/local/lib/python3.10/dist-packages (from portpicker==1.5.2->google-colab) (5.9.5)\n",
            "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests==2.31.0->google-colab) (3.3.2)\n",
            "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests==2.31.0->google-colab) (3.7)\n",
            "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests==2.31.0->google-colab) (2.0.7)\n",
            "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests==2.31.0->google-colab) (2024.6.2)\n",
            "Requirement already satisfied: parso<0.9.0,>=0.8.3 in /usr/local/lib/python3.10/dist-packages (from jedi>=0.16->ipython==7.34.0->google-colab) (0.8.4)\n",
            "Requirement already satisfied: platformdirs>=2.5 in /usr/local/lib/python3.10/dist-packages (from jupyter-core>=4.6.1->notebook==6.5.5->google-colab) (4.2.2)\n",
            "Requirement already satisfied: notebook-shim>=0.2.3 in /usr/local/lib/python3.10/dist-packages (from nbclassic>=0.4.7->notebook==6.5.5->google-colab) (0.2.4)\n",
            "Requirement already satisfied: lxml in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook==6.5.5->google-colab) (4.9.4)\n",
            "Requirement already satisfied: beautifulsoup4 in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook==6.5.5->google-colab) (4.12.3)\n",
            "Requirement already satisfied: bleach in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook==6.5.5->google-colab) (6.1.0)\n",
            "Requirement already satisfied: defusedxml in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook==6.5.5->google-colab) (0.7.1)\n",
            "Requirement already satisfied: entrypoints>=0.2.2 in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook==6.5.5->google-colab) (0.4)\n",
            "Requirement already satisfied: jupyterlab-pygments in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook==6.5.5->google-colab) (0.3.0)\n",
            "Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook==6.5.5->google-colab) (2.1.5)\n",
            "Requirement already satisfied: mistune<2,>=0.8.1 in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook==6.5.5->google-colab) (0.8.4)\n",
            "Requirement already satisfied: nbclient>=0.5.0 in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook==6.5.5->google-colab) (0.10.0)\n",
            "Requirement already satisfied: packaging in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook==6.5.5->google-colab) (24.1)\n",
            "Requirement already satisfied: pandocfilters>=1.4.1 in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook==6.5.5->google-colab) (1.5.1)\n",
            "Requirement already satisfied: tinycss2 in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook==6.5.5->google-colab) (1.3.0)\n",
            "Requirement already satisfied: fastjsonschema>=2.15 in /usr/local/lib/python3.10/dist-packages (from nbformat->notebook==6.5.5->google-colab) (2.20.0)\n",
            "Requirement already satisfied: jsonschema>=2.6 in /usr/local/lib/python3.10/dist-packages (from nbformat->notebook==6.5.5->google-colab) (4.19.2)\n",
            "Requirement already satisfied: ptyprocess>=0.5 in /usr/local/lib/python3.10/dist-packages (from pexpect>4.3->ipython==7.34.0->google-colab) (0.7.0)\n",
            "Requirement already satisfied: wcwidth in /usr/local/lib/python3.10/dist-packages (from prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0->ipython==7.34.0->google-colab) (0.2.13)\n",
            "Requirement already satisfied: pyasn1<0.7.0,>=0.4.6 in /usr/local/lib/python3.10/dist-packages (from pyasn1-modules>=0.2.1->google-auth==2.27.0->google-colab) (0.6.0)\n",
            "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.8.2->pandas==2.0.3->google-colab) (1.16.0)\n",
            "Requirement already satisfied: argon2-cffi-bindings in /usr/local/lib/python3.10/dist-packages (from argon2-cffi->notebook==6.5.5->google-colab) (21.2.0)\n",
            "Requirement already satisfied: attrs>=22.2.0 in /usr/local/lib/python3.10/dist-packages (from jsonschema>=2.6->nbformat->notebook==6.5.5->google-colab) (23.2.0)\n",
            "Requirement already satisfied: jsonschema-specifications>=2023.03.6 in /usr/local/lib/python3.10/dist-packages (from jsonschema>=2.6->nbformat->notebook==6.5.5->google-colab) (2023.12.1)\n",
            "Requirement already satisfied: referencing>=0.28.4 in /usr/local/lib/python3.10/dist-packages (from jsonschema>=2.6->nbformat->notebook==6.5.5->google-colab) (0.35.1)\n",
            "Requirement already satisfied: rpds-py>=0.7.1 in /usr/local/lib/python3.10/dist-packages (from jsonschema>=2.6->nbformat->notebook==6.5.5->google-colab) (0.18.1)\n",
            "Requirement already satisfied: jupyter-server<3,>=1.8 in /usr/local/lib/python3.10/dist-packages (from notebook-shim>=0.2.3->nbclassic>=0.4.7->notebook==6.5.5->google-colab) (1.24.0)\n",
            "Requirement already satisfied: cffi>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from argon2-cffi-bindings->argon2-cffi->notebook==6.5.5->google-colab) (1.16.0)\n",
            "Requirement already satisfied: soupsieve>1.2 in /usr/local/lib/python3.10/dist-packages (from beautifulsoup4->nbconvert>=5->notebook==6.5.5->google-colab) (2.5)\n",
            "Requirement already satisfied: webencodings in /usr/local/lib/python3.10/dist-packages (from bleach->nbconvert>=5->notebook==6.5.5->google-colab) (0.5.1)\n",
            "Requirement already satisfied: pycparser in /usr/local/lib/python3.10/dist-packages (from cffi>=1.0.1->argon2-cffi-bindings->argon2-cffi->notebook==6.5.5->google-colab) (2.22)\n",
            "Requirement already satisfied: anyio<4,>=3.1.0 in /usr/local/lib/python3.10/dist-packages (from jupyter-server<3,>=1.8->notebook-shim>=0.2.3->nbclassic>=0.4.7->notebook==6.5.5->google-colab) (3.7.1)\n",
            "Requirement already satisfied: websocket-client in /usr/local/lib/python3.10/dist-packages (from jupyter-server<3,>=1.8->notebook-shim>=0.2.3->nbclassic>=0.4.7->notebook==6.5.5->google-colab) (1.8.0)\n",
            "Requirement already satisfied: sniffio>=1.1 in /usr/local/lib/python3.10/dist-packages (from anyio<4,>=3.1.0->jupyter-server<3,>=1.8->notebook-shim>=0.2.3->nbclassic>=0.4.7->notebook==6.5.5->google-colab) (1.3.1)\n",
            "Requirement already satisfied: exceptiongroup in /usr/local/lib/python3.10/dist-packages (from anyio<4,>=3.1.0->jupyter-server<3,>=1.8->notebook-shim>=0.2.3->nbclassic>=0.4.7->notebook==6.5.5->google-colab) (1.2.1)\n",
            "Installing collected packages: jedi\n",
            "Successfully installed jedi-0.19.1\n",
            "Requirement already satisfied: tensorflow in /usr/local/lib/python3.10/dist-packages (2.15.0)\n",
            "Requirement already satisfied: keras in /usr/local/lib/python3.10/dist-packages (2.15.0)\n",
            "Requirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (1.25.2)\n",
            "Requirement already satisfied: absl-py>=1.0.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (1.4.0)\n",
            "Requirement already satisfied: astunparse>=1.6.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (1.6.3)\n",
            "Requirement already satisfied: flatbuffers>=23.5.26 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (24.3.25)\n",
            "Requirement already satisfied: gast!=0.5.0,!=0.5.1,!=0.5.2,>=0.2.1 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (0.5.4)\n",
            "Requirement already satisfied: google-pasta>=0.1.1 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (0.2.0)\n",
            "Requirement already satisfied: h5py>=2.9.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (3.9.0)\n",
            "Requirement already satisfied: libclang>=13.0.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (18.1.1)\n",
            "Requirement already satisfied: ml-dtypes~=0.2.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (0.2.0)\n",
            "Requirement already satisfied: opt-einsum>=2.3.2 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (3.3.0)\n",
            "Requirement already satisfied: packaging in /usr/local/lib/python3.10/dist-packages (from tensorflow) (24.1)\n",
            "Requirement already satisfied: protobuf!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev,>=3.20.3 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (3.20.3)\n",
            "Requirement already satisfied: setuptools in /usr/local/lib/python3.10/dist-packages (from tensorflow) (67.7.2)\n",
            "Requirement already satisfied: six>=1.12.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (1.16.0)\n",
            "Requirement already satisfied: termcolor>=1.1.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (2.4.0)\n",
            "Requirement already satisfied: typing-extensions>=3.6.6 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (4.12.2)\n",
            "Requirement already satisfied: wrapt<1.15,>=1.11.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (1.14.1)\n",
            "Requirement already satisfied: tensorflow-io-gcs-filesystem>=0.23.1 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (0.37.0)\n",
            "Requirement already satisfied: grpcio<2.0,>=1.24.3 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (1.64.1)\n",
            "Requirement already satisfied: tensorboard<2.16,>=2.15 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (2.15.2)\n",
            "Requirement already satisfied: tensorflow-estimator<2.16,>=2.15.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (2.15.0)\n",
            "Requirement already satisfied: wheel<1.0,>=0.23.0 in /usr/local/lib/python3.10/dist-packages (from astunparse>=1.6.0->tensorflow) (0.43.0)\n",
            "Requirement already satisfied: google-auth<3,>=1.6.3 in /usr/local/lib/python3.10/dist-packages (from tensorboard<2.16,>=2.15->tensorflow) (2.27.0)\n",
            "Requirement already satisfied: google-auth-oauthlib<2,>=0.5 in /usr/local/lib/python3.10/dist-packages (from tensorboard<2.16,>=2.15->tensorflow) (1.2.0)\n",
            "Requirement already satisfied: markdown>=2.6.8 in /usr/local/lib/python3.10/dist-packages (from tensorboard<2.16,>=2.15->tensorflow) (3.6)\n",
            "Requirement already satisfied: requests<3,>=2.21.0 in /usr/local/lib/python3.10/dist-packages (from tensorboard<2.16,>=2.15->tensorflow) (2.31.0)\n",
            "Requirement already satisfied: tensorboard-data-server<0.8.0,>=0.7.0 in /usr/local/lib/python3.10/dist-packages (from tensorboard<2.16,>=2.15->tensorflow) (0.7.2)\n",
            "Requirement already satisfied: werkzeug>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from tensorboard<2.16,>=2.15->tensorflow) (3.0.3)\n",
            "Requirement already satisfied: cachetools<6.0,>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from google-auth<3,>=1.6.3->tensorboard<2.16,>=2.15->tensorflow) (5.3.3)\n",
            "Requirement already satisfied: pyasn1-modules>=0.2.1 in /usr/local/lib/python3.10/dist-packages (from google-auth<3,>=1.6.3->tensorboard<2.16,>=2.15->tensorflow) (0.4.0)\n",
            "Requirement already satisfied: rsa<5,>=3.1.4 in /usr/local/lib/python3.10/dist-packages (from google-auth<3,>=1.6.3->tensorboard<2.16,>=2.15->tensorflow) (4.9)\n",
            "Requirement already satisfied: requests-oauthlib>=0.7.0 in /usr/local/lib/python3.10/dist-packages (from google-auth-oauthlib<2,>=0.5->tensorboard<2.16,>=2.15->tensorflow) (1.3.1)\n",
            "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2.21.0->tensorboard<2.16,>=2.15->tensorflow) (3.3.2)\n",
            "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2.21.0->tensorboard<2.16,>=2.15->tensorflow) (3.7)\n",
            "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2.21.0->tensorboard<2.16,>=2.15->tensorflow) (2.0.7)\n",
            "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2.21.0->tensorboard<2.16,>=2.15->tensorflow) (2024.6.2)\n",
            "Requirement already satisfied: MarkupSafe>=2.1.1 in /usr/local/lib/python3.10/dist-packages (from werkzeug>=1.0.1->tensorboard<2.16,>=2.15->tensorflow) (2.1.5)\n",
            "Requirement already satisfied: pyasn1<0.7.0,>=0.4.6 in /usr/local/lib/python3.10/dist-packages (from pyasn1-modules>=0.2.1->google-auth<3,>=1.6.3->tensorboard<2.16,>=2.15->tensorflow) (0.6.0)\n",
            "Requirement already satisfied: oauthlib>=3.0.0 in /usr/local/lib/python3.10/dist-packages (from requests-oauthlib>=0.7.0->google-auth-oauthlib<2,>=0.5->tensorboard<2.16,>=2.15->tensorflow) (3.2.2)\n",
            "Requirement already satisfied: h5py in /usr/local/lib/python3.10/dist-packages (3.9.0)\n",
            "Requirement already satisfied: tqdm in /usr/local/lib/python3.10/dist-packages (4.66.4)\n",
            "Requirement already satisfied: numpy>=1.17.3 in /usr/local/lib/python3.10/dist-packages (from h5py) (1.25.2)\n",
            "Requirement already satisfied: pandas in /usr/local/lib/python3.10/dist-packages (2.0.3)\n",
            "Requirement already satisfied: scipy in /usr/local/lib/python3.10/dist-packages (1.11.4)\n",
            "Collecting imblearn\n",
            "  Downloading imblearn-0.0-py2.py3-none-any.whl (1.9 kB)\n",
            "Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.10/dist-packages (from pandas) (2.8.2)\n",
            "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas) (2023.4)\n",
            "Requirement already satisfied: tzdata>=2022.1 in /usr/local/lib/python3.10/dist-packages (from pandas) (2024.1)\n",
            "Requirement already satisfied: numpy>=1.21.0 in /usr/local/lib/python3.10/dist-packages (from pandas) (1.25.2)\n",
            "Requirement already satisfied: imbalanced-learn in /usr/local/lib/python3.10/dist-packages (from imblearn) (0.10.1)\n",
            "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.8.2->pandas) (1.16.0)\n",
            "Requirement already satisfied: scikit-learn>=1.0.2 in /usr/local/lib/python3.10/dist-packages (from imbalanced-learn->imblearn) (1.2.2)\n",
            "Requirement already satisfied: joblib>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from imbalanced-learn->imblearn) (1.4.2)\n",
            "Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from imbalanced-learn->imblearn) (3.5.0)\n",
            "Installing collected packages: imblearn\n",
            "Successfully installed imblearn-0.0\n",
            "Requirement already satisfied: matplotlib in /usr/local/lib/python3.10/dist-packages (3.7.1)\n",
            "Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (1.2.1)\n",
            "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (0.12.1)\n",
            "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (4.53.0)\n",
            "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (1.4.5)\n",
            "Requirement already satisfied: numpy>=1.20 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (1.25.2)\n",
            "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (24.1)\n",
            "Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (9.4.0)\n",
            "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (3.1.2)\n",
            "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (2.8.2)\n",
            "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.7->matplotlib) (1.16.0)\n"
          ]
        }
      ],
      "source": [
        "# == Install requirements ==\n",
        "\n",
        "!pip install google-colab\n",
        "!pip install tensorflow keras numpy\n",
        "!pip install h5py tqdm\n",
        "!pip install pandas scipy imblearn\n",
        "!pip install matplotlib"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 4,
      "metadata": {
        "id": "UD4mNESiD965"
      },
      "outputs": [],
      "source": [
        "# == Import requirements ==\n",
        "\n",
        "import warnings\n",
        "warnings.filterwarnings(\"ignore\")\n",
        "\n",
        "from google.colab import drive\n",
        "import os\n",
        "import h5py\n",
        "from tqdm import tqdm\n",
        "import pandas as pd\n",
        "from collections import Counter\n",
        "\n",
        "import random\n",
        "import scipy\n",
        "from scipy.signal import butter, lfilter\n",
        "from sklearn.model_selection import KFold\n",
        "from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score\n",
        "from imblearn.over_sampling import SMOTE\n",
        "from imblearn.pipeline import Pipeline\n",
        "from imblearn.under_sampling import RandomUnderSampler\n",
        "from imblearn.over_sampling import RandomOverSampler\n",
        "\n",
        "import numpy as np\n",
        "import tensorflow as tf\n",
        "from tensorflow import keras\n",
        "from tensorflow.keras.optimizers import Adam\n",
        "from tensorflow.keras import regularizers\n",
        "\n",
        "import matplotlib.pyplot as plt"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 5,
      "metadata": {
        "id": "rcryqS0FDqBV"
      },
      "outputs": [],
      "source": [
        "# == Preprocess functions ==\n",
        "\n",
        "def pad_or_truncate_ecg(ecg: list, max_samples: int) -> list:\n",
        "    try:\n",
        "        padded_or_truncated_ecg = ecg[:max_samples] + [0] * (max_samples - len(ecg))\n",
        "    except Exception as e:\n",
        "        print(\"Fail: padding\", e)\n",
        "    return padded_or_truncated_ecg\n",
        "\n",
        "def resample_ecg(ecg: list, resample: int):\n",
        "    new_ecg = scipy.signal.resample(\n",
        "        ecg, resample, t=None, axis=0, window=None, domain=\"time\"\n",
        "    )\n",
        "    return list(new_ecg)\n",
        "\n",
        "def normalize_to_minus11(ecg: list):\n",
        "    max_val = max(ecg)\n",
        "    min_val = min(ecg)\n",
        "    # Handle the case where max_val and min_val are the same (to avoid division by zero)\n",
        "    if max_val == min_val:\n",
        "        return [0 for _ in ecg]\n",
        "    normalized_values = [2 * (x - min_val) / (max_val - min_val) - 1 for x in ecg]\n",
        "    return normalized_values\n",
        "\n",
        "def butter_bandpass(lowcut, highcut, fs, order=4):\n",
        "    nyquist = 0.5 * fs\n",
        "    low = lowcut / nyquist\n",
        "    high = highcut / nyquist\n",
        "    b, a = butter(order, [low, high], btype=\"band\")\n",
        "    return b, a\n",
        "\n",
        "def butter_bandpass_filter(ecg: list, lowcut: float, highcut: float, sampling_rate: int, order: int =4):\n",
        "    b, a = butter_bandpass(lowcut, highcut, sampling_rate, order=order)\n",
        "    y = lfilter(b, a, ecg)\n",
        "    return y\n",
        "\n",
        "def split_list_into_n_sublists(lst, n):\n",
        "    k, m = divmod(len(lst), n)\n",
        "    return [lst[i * k + min(i, m):(i + 1) * k + min(i + 1, m)] for i in range(n)]"
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# == Map labels to numerical values functions ==\n",
        "\n",
        "# Official scored labels Physionet 2021: https://github.com/physionetchallenges/evaluation-2021/blob/main/dx_mapping_scored.csv\n",
        "\n",
        "arrhyhtmia_mapping_id_to_index = {\n",
        "    \"426783006\": 0, # sinus rhythm (SR)\n",
        "    \"164889003\": 1, # atrial fibrillation (AF)\n",
        "    \"164890007\": 2, # atrial flutter (AFL)\n",
        "    \"284470004\": 3, # premature atrial contraction (PAC)\n",
        "    \"63593006\": 3, # supraventricular premature beats (SVPB)\n",
        "    \"427172004\": 4, # premature ventricular contractions (PVC)\n",
        "    \"17338001\": 4, # ventricular premature beats (VPB)\n",
        "    \"6374002\": 5, # bundle branch block (BBB)\n",
        "    \"426627000\": 6, # bradycardia (Brady)\n",
        "    \"733534002\": 7, # complete left bundle branch block (CLBBB)\n",
        "    \"164909002\": 7, # left bundle branch block (LBBB)\n",
        "    \"713427006\": 8, # complete right bundle branch block (CRBBB)\n",
        "    \"59118001\": 8, # right bundle branch block (RBBB)\n",
        "    \"270492004\": 9, # 1st degree av block (IAVB)\n",
        "    \"713426002\": 10, # incomplete right bundle branch block (IRBBB)\n",
        "    \"39732003\": 11, # left axis deviation (LAD)\n",
        "    \"445118002\": 12, # left anterior fascicular block (LAnFB)\n",
        "    \"251146004\": 13, # low qrs voltages (LQRSV)\n",
        "    \"698252002\": 14, # nonspecific intraventricular conduction disorder (NSIVCB)\n",
        "    \"10370003\": 15, # pacing rhythm (PR)\n",
        "    \"365413008\": 16, # poor R wave Progression (PRWP)\n",
        "    \"164947007\": 17, # prolonged pr interval (LPR)\n",
        "    \"111975006\": 18, # prolonged qt interval (LQT)\n",
        "    \"164917005\": 19, # qwave abnormal (QAb)\n",
        "    \"47665007\": 20,  # right axis deviation (RAD)\n",
        "    \"427393009\": 21, # sinus arrhythmia (SA)\n",
        "    \"426177001\": 22, # sinus bradycardia (SB)\n",
        "    \"427084000\": 23, # sinus tachycardia (STach)\n",
        "    \"164934002\": 24, # t wave abnormal (TAb)\n",
        "    \"59931005\": 25 # t wave inversion (TInv)\n",
        "}\n",
        "\n",
        "def map_arrhyhtmia_id_to_index(x: str) -> int:\n",
        "    return arrhyhtmia_mapping_id_to_index[x]\n",
        "\n",
        "arrhyhtmia_mapping_index_to_id = {\n",
        "    0: \"426783006\", # sinus rhythm (SR)\n",
        "    1: \"164889003\", # atrial fibrillation (AF)\n",
        "    2: \"164890007\", # atrial flutter (AFL)\n",
        "    3: \"284470004|63593006\", # premature atrial contraction (PAC) | supraventricular premature beats (SVPB)\n",
        "    4: \"427172004|17338001\", # premature ventricular contractions (PVC) | ventricular premature beats (VPB)\n",
        "    5: \"6374002\", # bundle branch block (BBB)\n",
        "    6: \"426627000\", # bradycardia (Brady)\n",
        "    7: \"733534002|164909002\", # complete left bundle branch block (CLBBB) | left bundle branch block (LBBB)\n",
        "    8: \"713427006|59118001\", # complete right bundle branch block (CRBBB) | right bundle branch block (RBBB)\n",
        "    9: \"270492004\", # 1st degree av block (IAVB)\n",
        "    10: \"713426002\", # incomplete right bundle branch block (IRBBB)\n",
        "    11: \"39732003\", # left axis deviation (LAD)\n",
        "    12: \"445118002\", # left anterior fascicular block (LAnFB)\n",
        "    13: \"251146004\", # low qrs voltages (LQRSV)\n",
        "    14: \"698252002\", # nonspecific intraventricular conduction disorder (NSIVCB)\n",
        "    15: \"10370003\", # pacing rhythm (PR)\n",
        "    16: \"365413008\", # poor R wave Progression (PRWP)\n",
        "    17: \"164947007\", # prolonged pr interval (LPR)\n",
        "    18: \"111975006\", # prolonged qt interval (LQT)\n",
        "    19: \"164917005\", # qwave abnormal (QAb)\n",
        "    20: \"47665007\",  # right axis deviation (RAD)\n",
        "    21: \"427393009\", # sinus arrhythmia (SA)\n",
        "    22: \"426177001\", # sinus bradycardia (SB)\n",
        "    23: \"427084000\", # sinus tachycardia (STach)\n",
        "    24: \"164934002\", # t wave abnormal (TAb)\n",
        "    25: \"59931005\" # t wave inversion (TInv)\n",
        "}\n",
        "\n",
        "def map_arrhyhtmia_index_to_id(x: int) -> str:\n",
        "    return arrhyhtmia_mapping_index_to_id[x]"
      ],
      "metadata": {
        "id": "g3IMoWUCkMc5"
      },
      "execution_count": 6,
      "outputs": []
    },
    {
      "cell_type": "code",
      "execution_count": 7,
      "metadata": {
        "id": "LZTY2UE1Mhlj",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "4786b477-234f-4845-feb6-65909d959574"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Mounted at /content/drive\n",
            "codes_SNOMED.csv  physionet2017_references.csv\tphysionet2021_references.csv\n",
            "physionet2017.h5  physionet2021.h5\t\tprepared\n"
          ]
        }
      ],
      "source": [
        "# == Mount drive ==\n",
        "\n",
        "# https://drive.google.com/drive/folders/1L_gOMrkygu2N0k97COYuVrmE-AwEEMoQ\n",
        "\n",
        "drive.mount('/content/drive')\n",
        "path = \"/content/drive/My Drive/Master Thesis/Datasets\"\n",
        "!ls \"/content/drive/My Drive/Master Thesis/Datasets\""
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 8,
      "metadata": {
        "id": "ejP3dsia8Wdq",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "2cc246da-1b33-447f-d342-1a69059a53d1"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Load ECG data: 100%|██████████| 81960/81960 [04:45<00:00, 286.91it/s]\n",
            "Load ECG labels:  99%|█████████▉| 87500/88252 [00:08<00:00, 18633.60it/s]"
          ]
        }
      ],
      "source": [
        "# == Load all Physionet2021 ECGs and their IDs to a dictionary X_dict ==\n",
        "\n",
        "X_dict = {}\n",
        "Y_dict = {}\n",
        "\n",
        "h5file = h5py.File(os.path.join(path, \"prepared/physionet2021_scoredLabels.h5\"), \"r\")\n",
        "IDs = list(h5file.keys())\n",
        "pbar = tqdm(total=len(IDs), desc=\"Load ECG data\", position=0, leave=True)\n",
        "for key in IDs:\n",
        "    X_dict[key] = list(h5file[key][0])\n",
        "    pbar.update(1)\n",
        "\n",
        "# == Load all labels and their IDs to a dictionary Y_dict (some ECGs can have multiple labels) ==\n",
        "\n",
        "labels_df = pd.read_csv(os.path.join(path, \"physionet2021_references.csv\"), sep=\";\")\n",
        "pbar = tqdm(total=len(labels_df), desc=\"Load ECG labels\", position=0, leave=True)\n",
        "for _, row in labels_df.iterrows():\n",
        "    labels = row[\"labels\"].strip().split(\",\")\n",
        "    labels_valid = []\n",
        "    for label in labels:\n",
        "        if label in VALID_LABELS:\n",
        "              labels_valid.append(map_arrhyhtmia_id_to_index(label))\n",
        "    if row[\"id\"] in X_dict:\n",
        "        Y_dict[row[\"id\"]] = labels_valid\n",
        "    pbar.update(1)\n",
        "\n",
        "# del IDs, h5file"
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# == Preprocess ECGs ==\n",
        "\n",
        "pbar = tqdm(total=len(X_dict), desc=\"Preprocess ECGs\", position=0, leave=True)\n",
        "for key in X_dict:\n",
        "    X_dict[key] = pad_or_truncate_ecg(ecg=X_dict[key], max_samples=5000)\n",
        "    X_dict[key] = resample_ecg(ecg=X_dict[key], resample=2000)\n",
        "    X_dict[key] = normalize_to_minus11(ecg=X_dict[key])\n",
        "    X_dict[key] = butter_bandpass_filter(ecg=X_dict[key], lowcut=0.3, highcut=21.0, sampling_rate=200)\n",
        "    pbar.update(1)\n"
      ],
      "metadata": {
        "id": "yibThGeHx5U7",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "f6ae4fc9-4c89-4428-fea8-d9740e6f940d"
      },
      "execution_count": 9,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Load ECG labels: 100%|██████████| 88252/88252 [00:08<00:00, 10130.26it/s]\n",
            "Preprocess ECGs: 100%|█████████▉| 81956/81960 [02:42<00:00, 353.65it/s]"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 10,
      "metadata": {
        "id": "UkTDLTJy9ku0",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "c09799b1-8da6-4344-ff7d-881826e0899a"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Map labels to ECGs: 100%|██████████| 81960/81960 [00:00<00:00, 1029529.82it/s]\n"
          ]
        }
      ],
      "source": [
        "# == Map scored labels to ECGs and create three lists (X: ECGs, Y: labels, Z: IDs) ==\n",
        "\n",
        "Y = []\n",
        "Z = []\n",
        "\n",
        "for patient_id in tqdm(Y_dict, desc=\"Map labels to ECGs\", position=0, leave=True):\n",
        "    for label in Y_dict[patient_id]:\n",
        "        Y.append(label)\n",
        "        Z.append(str(patient_id))"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 11,
      "metadata": {
        "id": "VAYphezXWKSx"
      },
      "outputs": [],
      "source": [
        "# == Split train-test sets by patients if train-test splits files are given ==\n",
        "\n",
        "if os.path.exists(os.path.join(path, \"prepared/trainset_patient_ids.txt\")) and os.path.exists(os.path.join(path, \"prepared/testset_patient_ids.txt\")):\n",
        "    f = open(os.path.join(path, \"prepared/trainset_patient_ids.txt\"), \"r\", encoding=\"utf-8\")\n",
        "    trainset_patient_ids = f.readlines()\n",
        "    f.close()\n",
        "    f = open(os.path.join(path, \"prepared/testset_patient_ids.txt\"), \"r\", encoding=\"utf-8\")\n",
        "    testset_patient_ids = f.readlines()\n",
        "    f.close()\n",
        "    trainset_patient_ids = list(map(lambda x: x.replace(\"\\n\", \"\"), trainset_patient_ids))\n",
        "    testset_patient_ids = list(map(lambda x: x.replace(\"\\n\", \"\"), testset_patient_ids))\n",
        "    trainset_patient_ids = set(trainset_patient_ids)\n",
        "    testset_patient_ids = set(testset_patient_ids)\n",
        "    Y_train = []\n",
        "    Z_train = []\n",
        "    Y_test = []\n",
        "    Z_test = []\n",
        "    for sample in zip(Y, Z):\n",
        "        if sample[1] in trainset_patient_ids:\n",
        "            Y_train.append(sample[0])\n",
        "            Z_train.append(sample[1])\n",
        "        elif sample[1] in testset_patient_ids:\n",
        "            Y_test.append(sample[0])\n",
        "            Z_test.append(sample[1])\n",
        "    # del Y, Z\n",
        "else:\n",
        "    print(\"No predefined train-test split files are found!\")"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 12,
      "metadata": {
        "id": "S1t3m5cUio4c",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "0b5787bf-1782-4523-8fbd-0ed413791804"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Train-test split files are present, no new split was created!\n"
          ]
        }
      ],
      "source": [
        "# == Split data train-test sets by patients ==\n",
        "\n",
        "if not os.path.exists(os.path.join(path, \"prepared/trainset_patient_ids.txt\")) or not os.path.exists(os.path.join(path, \"prepared/testset_patient_ids.txt\")):\n",
        "    bins = []\n",
        "    for x in range(NUM_CLASSES):\n",
        "        bins.append([])\n",
        "\n",
        "    # Create num_classes bins (1 bin = 1 class)\n",
        "    for sample in zip(Y, Z):\n",
        "        bins[sample[0]].append([sample[0], sample[1]])\n",
        "\n",
        "    # Create train-test bins (e.g. TRAIN_TEST_SPLIT = 80%-20%)\n",
        "    train_bins = []\n",
        "    test_bins = []\n",
        "    for x in range(NUM_CLASSES):\n",
        "        train_bins.append([])\n",
        "        test_bins.append([])\n",
        "    for index, bin in enumerate(bins):\n",
        "        split_index = int(len(bin) * TRAIN_TEST_SPLIT)\n",
        "        train_bins[index] = bin[:split_index]\n",
        "        test_bins[index] = bin[split_index:]\n",
        "\n",
        "    # Create test set (sort bins by occurence of labels descending before adding to train set because of minor classes and multiple labels and add if patient id is not in train set)\n",
        "    Y_test = []\n",
        "    Z_test = []\n",
        "    id_already_in_x_test = set()\n",
        "    test_bins.sort(key=lambda x: len(x))\n",
        "    for bin in test_bins:\n",
        "        for sample in bin:\n",
        "            id_already_in_x_test.add(sample[1])\n",
        "            Y_test.append(sample[0])\n",
        "            Z_test.append(sample[1])\n",
        "\n",
        "    # Create train set (sort bins by occurence of labels descending before adding to train set because of minor classes and multiple labels and add if patient id is not in train (split by patients) or test set (multiple labels in test set would bias the evaluation) already)\n",
        "    Y_train = []\n",
        "    Z_train = []\n",
        "    id_already_in_x_train = set()\n",
        "    train_bins.sort(key=lambda x: len(x))\n",
        "    for bin in train_bins:\n",
        "        for sample in bin:\n",
        "            if sample[1] not in id_already_in_x_test:\n",
        "                id_already_in_x_train.add(sample[1])\n",
        "                Y_train.append(sample[0])\n",
        "                Z_train.append(sample[1])\n",
        "\n",
        "    # Write train and test patient ids to file\n",
        "    id_already_in_x_train_list = list(id_already_in_x_train)\n",
        "    id_already_in_x_train_list = list(map(lambda x: str(x) + \"\\n\", id_already_in_x_train_list))\n",
        "    id_already_in_x_test_list = list(id_already_in_x_test)\n",
        "    id_already_in_x_test_list = list(map(lambda x: str(x) + \"\\n\", id_already_in_x_test_list))\n",
        "    # with open('trainset_patient_ids.txt', 'w', encoding='utf-8') as file:\n",
        "    #    file.writelines(id_already_in_x_train_list)\n",
        "    # with open('testset_patient_ids.txt', 'w', encoding='utf-8') as file:\n",
        "    #    file.writelines(id_already_in_x_test_list)\n",
        "    # del Y, Z\n",
        "else:\n",
        "    print(\"Train-test split files are present, no new split was created!\")"
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "for index, z in enumerate(Z_train):\n",
        "    Z_train[index] = [Z_train[index]]\n",
        "for index, z in enumerate(Z_test):\n",
        "    Z_test[index] = [Z_test[index]]"
      ],
      "metadata": {
        "id": "fvOmmKpwKubi"
      },
      "execution_count": 13,
      "outputs": []
    },
    {
      "cell_type": "code",
      "execution_count": 14,
      "metadata": {
        "id": "ejt6gOg7dPMd",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "ccdb83f5-822a-421d-9198-9281bf61f759"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Trainset undersampling_strategy: {0: 6000, 23: 6000, 24: 6000, 2: 6000, 22: 6000}\n",
            "Trainset oversampling_strategy: {12: 6000, 25: 6000, 13: 6000, 16: 6000, 19: 6000, 5: 6000, 18: 6000, 14: 6000, 21: 6000, 6: 6000, 9: 6000, 8: 6000, 11: 6000, 3: 6000, 4: 6000, 20: 6000, 7: 6000, 15: 6000, 10: 6000, 17: 6000, 1: 6000}\n",
            "Testset undersampling_strategy: {2: 100, 8: 100, 24: 100, 5: 100, 25: 100, 12: 100, 19: 100, 16: 100, 7: 100, 10: 100, 20: 100, 11: 100, 14: 100, 15: 100, 13: 100, 21: 100, 18: 100, 4: 100, 23: 100, 0: 100, 3: 100, 17: 100, 22: 100, 9: 100, 1: 100}\n",
            "Trainset: Counter({0: 19812, 22: 14985, 24: 7824, 23: 7566, 2: 6699, 11: 4145, 1: 3624, 8: 3595, 21: 3002, 25: 2986, 9: 2558, 3: 2433, 4: 1480, 18: 1457, 19: 1376, 12: 1163, 13: 1154, 10: 1153, 15: 1142, 14: 959, 7: 870, 20: 825, 16: 494, 5: 404, 6: 232, 17: 134})\n",
            "Testset: Counter({0: 9159, 22: 3933, 24: 3892, 11: 3486, 23: 2091, 2: 1675, 1: 1631, 8: 1235, 12: 1023, 25: 1003, 9: 976, 3: 832, 14: 809, 21: 788, 10: 704, 19: 700, 7: 619, 4: 458, 20: 455, 18: 450, 13: 445, 15: 338, 17: 258, 16: 144, 5: 118, 6: 63})\n",
            "Trainset balanced: Counter({0: 6000, 1: 6000, 2: 6000, 3: 6000, 4: 6000, 5: 6000, 6: 6000, 7: 6000, 8: 6000, 9: 6000, 10: 6000, 11: 6000, 12: 6000, 13: 6000, 14: 6000, 15: 6000, 16: 6000, 17: 6000, 18: 6000, 19: 6000, 20: 6000, 21: 6000, 22: 6000, 23: 6000, 24: 6000, 25: 6000})\n",
            "Testset balanced: Counter({0: 100, 1: 100, 2: 100, 3: 100, 4: 100, 5: 100, 7: 100, 8: 100, 9: 100, 10: 100, 11: 100, 12: 100, 13: 100, 14: 100, 15: 100, 16: 100, 17: 100, 18: 100, 19: 100, 20: 100, 21: 100, 22: 100, 23: 100, 24: 100, 25: 100, 6: 63})\n"
          ]
        }
      ],
      "source": [
        "# == Balance data ==\n",
        "\n",
        "# Trainset\n",
        "\n",
        "count_train = Counter(Y_train)\n",
        "\n",
        "undersampling_strategy = {}\n",
        "oversampling_strategy = {}\n",
        "for i in count_train:\n",
        "    if count_train[i] > CLASS_BALANCE:\n",
        "        undersampling_strategy[i] = CLASS_BALANCE\n",
        "    elif count_train[i] <= CLASS_BALANCE:\n",
        "        oversampling_strategy[i] = CLASS_BALANCE\n",
        "print(f\"Trainset undersampling_strategy: {undersampling_strategy}\")\n",
        "print(f\"Trainset oversampling_strategy: {oversampling_strategy}\")\n",
        "\n",
        "under = RandomUnderSampler(sampling_strategy=undersampling_strategy)\n",
        "over = RandomOverSampler(sampling_strategy=oversampling_strategy)\n",
        "steps = [(\"u\", under), (\"o\", over)]\n",
        "pipeline = Pipeline(steps=steps)\n",
        "Z_train_balanced, Y_train_balanced = pipeline.fit_resample(Z_train, Y_train)\n",
        "\n",
        "count_train_balanced = Counter(Y_train_balanced)\n",
        "\n",
        "# Testset\n",
        "\n",
        "count_test = Counter(Y_test)\n",
        "\n",
        "# min_key = min(count_test, key=count_test.get)\n",
        "# min_value = count_test[min_key]\n",
        "\n",
        "undersampling_strategy = {}\n",
        "for i in count_test:\n",
        "    if count_test[i] > TEST_BALANCE:\n",
        "        undersampling_strategy[i] = TEST_BALANCE\n",
        "\n",
        "print(f\"Testset undersampling_strategy: {undersampling_strategy}\")\n",
        "\n",
        "under = RandomUnderSampler(sampling_strategy=undersampling_strategy)\n",
        "steps = [(\"u\", under)]\n",
        "pipeline = Pipeline(steps=steps)\n",
        "Z_test_balanced, Y_test_balanced = pipeline.fit_resample(Z_test, Y_test)\n",
        "\n",
        "count_test_balanced = Counter(Y_test_balanced)\n",
        "\n",
        "print(f\"Trainset: {count_train}\")\n",
        "print(f\"Testset: {count_test}\")\n",
        "print(f\"Trainset balanced: {count_train_balanced}\")\n",
        "print(f\"Testset balanced: {count_test_balanced}\")"
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "for index, z in enumerate(Z_train):\n",
        "    Z_train[index] = Z_train[index][0]\n",
        "for index, z in enumerate(Z_test):\n",
        "    Z_test[index] = Z_test[index][0]\n",
        "for index, z in enumerate(Z_train_balanced):\n",
        "    Z_train_balanced[index] = Z_train_balanced[index][0]\n",
        "for index, z in enumerate(Z_test_balanced):\n",
        "    Z_test_balanced[index] = Z_test_balanced[index][0]"
      ],
      "metadata": {
        "id": "bt8OyYkZNkXE"
      },
      "execution_count": 15,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "# == Create binary_crossentropy X_train, Y_train, X_train_balanced, Y_train_balanced, X_test, Y_test, X_test_balanced, Y_test_balanced ==\n",
        "\n",
        "for key in Y_dict:\n",
        "    binary_crossentropy_labels = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n",
        "    for label in Y_dict[key]:\n",
        "        binary_crossentropy_labels[label] = 1\n",
        "    Y_dict[key] = binary_crossentropy_labels\n",
        "\n",
        "X_train = []\n",
        "Y_train = []\n",
        "Z_train_new = []\n",
        "X_train_balanced = []\n",
        "Y_train_balanced = []\n",
        "Z_train_balanced_new = []\n",
        "X_test = []\n",
        "Y_test = []\n",
        "Z_test_new = []\n",
        "X_test_balanced = []\n",
        "Y_test_balanced = []\n",
        "Z_test_balanced_new = []\n",
        "\n",
        "for patient_id in set(Z_train):\n",
        "    X_train.append(X_dict[patient_id])\n",
        "    Y_train.append(Y_dict[patient_id])\n",
        "    Z_train_new.append(patient_id)\n",
        "\n",
        "for patient_id in set(Z_train_balanced):\n",
        "    X_train_balanced.append(X_dict[patient_id])\n",
        "    Y_train_balanced.append(Y_dict[patient_id])\n",
        "    Z_train_balanced_new.append(patient_id)\n",
        "\n",
        "for patient_id in set(Z_test):\n",
        "    X_test.append(X_dict[patient_id])\n",
        "    Y_test.append(Y_dict[patient_id])\n",
        "    Z_test_new.append(patient_id)\n",
        "\n",
        "for patient_id in set(Z_test_balanced):\n",
        "    X_test_balanced.append(X_dict[patient_id])\n",
        "    Y_test_balanced.append(Y_dict[patient_id])\n",
        "    Z_test_balanced_new.append(patient_id)\n",
        "\n",
        "Z_train = Z_train_new\n",
        "Z_train_balanced = Z_train_balanced_new\n",
        "Z_test = Z_test_new\n",
        "Z_test_balanced_new = Z_test_balanced_new"
      ],
      "metadata": {
        "id": "GPX3RLJoosEU"
      },
      "execution_count": 16,
      "outputs": []
    },
    {
      "cell_type": "code",
      "execution_count": 17,
      "metadata": {
        "id": "oH1on-V7RJ1s",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "03e6f97d-8c43-45b2-b1a4-99c86b906660"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Y_train: [[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1], [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0], [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0], [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1], [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]\n",
            "Y_test: [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0], [1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1], [0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0], [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0], [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]]\n",
            "Y_train_balanced: [[0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0], [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1], [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0], [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0]]\n",
            "Y_test_balanced: [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0], [1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1], [0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1], [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0], [0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0], [1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0]]\n"
          ]
        }
      ],
      "source": [
        "# == Shuffle data, convert to numpy lists and reshape ==\n",
        "\n",
        "# Shuffle data\n",
        "\n",
        "combined = list(zip(X_train, Y_train, Z_train))\n",
        "random.shuffle(combined)\n",
        "X_train, Y_train, Z_train = zip(*combined)\n",
        "X_train = list(X_train)\n",
        "Y_train = list(Y_train)\n",
        "Z_train = list(Z_train)\n",
        "\n",
        "combined = list(zip(X_test, Y_test, Z_test))\n",
        "random.shuffle(combined)\n",
        "X_test, Y_test, Z_test = zip(*combined)\n",
        "X_test = list(X_test)\n",
        "Y_test = list(Y_test)\n",
        "Z_test = list(Z_test)\n",
        "\n",
        "combined = list(zip(X_train_balanced, Y_train_balanced, Z_train_balanced))\n",
        "random.shuffle(combined)\n",
        "X_train_balanced, Y_train_balanced, Z_train_balanced = zip(*combined)\n",
        "X_train_balanced = list(X_train_balanced)\n",
        "Y_train_balanced = list(Y_train_balanced)\n",
        "Z_train_balanced = list(Z_train_balanced)\n",
        "\n",
        "combined = list(zip(X_test_balanced, Y_test_balanced, Z_test_balanced))\n",
        "random.shuffle(combined)\n",
        "X_test_balanced, Y_test_balanced, Z_test_balanced = zip(*combined)\n",
        "X_test_balanced = list(X_test_balanced)\n",
        "Y_test_balanced = list(Y_test_balanced)\n",
        "Z_test_balanced = list(Z_test_balanced)\n",
        "\n",
        "print(f\"Y_train: {Y_train[:50]}\")\n",
        "print(f\"Y_test: {Y_test[:50]}\")\n",
        "print(f\"Y_train_balanced: {Y_train_balanced[:50]}\")\n",
        "print(f\"Y_test_balanced: {Y_test_balanced[:50]}\")\n",
        "\n",
        "# Convert to numpy lists\n",
        "\n",
        "# Y_train = np.array(Y_train)\n",
        "# Y_test = np.array(Y_test)\n",
        "# Y_train_balanced = np.array(Y_train_balanced)\n",
        "# Y_test_balanced = np.array(Y_test_balanced)\n",
        "\n",
        "for index, x in enumerate(Y_train):\n",
        "    Y_train[index] = np.array(x)\n",
        "Y_train = np.array(Y_train)\n",
        "\n",
        "for index, x in enumerate(Y_test):\n",
        "    Y_test[index] = np.array(x)\n",
        "Y_test = np.array(Y_test)\n",
        "\n",
        "for index, x in enumerate(Y_train_balanced):\n",
        "    Y_train_balanced[index] = np.array(x)\n",
        "Y_train_balanced = np.array(Y_train_balanced)\n",
        "\n",
        "for index, x in enumerate(Y_test_balanced):\n",
        "    Y_test_balanced[index] = np.array(x)\n",
        "Y_test_balanced = np.array(Y_test_balanced)\n",
        "\n",
        "for index, x in enumerate(X_train):\n",
        "    X_train[index] = np.array(x)\n",
        "X_train = np.array(X_train)\n",
        "\n",
        "for index, x in enumerate(X_test):\n",
        "    X_test[index] = np.array(x)\n",
        "X_test = np.array(X_test)\n",
        "\n",
        "for index, x in enumerate(X_train_balanced):\n",
        "    X_train_balanced[index] = np.array(x)\n",
        "X_train_balanced = np.array(X_train_balanced)\n",
        "\n",
        "for index, x in enumerate(X_test_balanced):\n",
        "    X_test_balanced[index] = np.array(x)\n",
        "X_test_balanced = np.array(X_test_balanced)\n",
        "\n",
        "# Reshape\n",
        "\n",
        "X_train = X_train.reshape((-1, 2000, 1))\n",
        "X_test = X_test.reshape((-1, 2000, 1))\n",
        "X_train_balanced = X_train_balanced.reshape((-1, 2000, 1))\n",
        "X_test_balanced = X_test_balanced.reshape((-1, 2000, 1))"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 45,
      "metadata": {
        "id": "eEsV9r0EjSTw"
      },
      "outputs": [],
      "source": [
        "# == A-B-testing models ==\n",
        "\n",
        "# Model A: Residual_CNN_1lead\n",
        "def conv(i, filters=16, kernel_size=9, strides=1):\n",
        "    i = keras.layers.Conv1D(\n",
        "        filters=filters, kernel_size=kernel_size, strides=strides, padding=\"same\"\n",
        "    )(i)\n",
        "    i = keras.layers.BatchNormalization()(i)\n",
        "    i = keras.layers.LeakyReLU()(i)\n",
        "    i = keras.layers.SpatialDropout1D(0.1)(i)\n",
        "    return i\n",
        "def residual_unit(x, filters, layers=3):\n",
        "    inp = x\n",
        "    for i in range(layers):\n",
        "        x = conv(x, filters)\n",
        "    return keras.layers.add([x, inp])\n",
        "def conv_block(x, filters, strides):\n",
        "    x = conv(x, filters)\n",
        "    x = residual_unit(x, filters)\n",
        "    if strides > 1:\n",
        "        x = keras.layers.AveragePooling1D(strides, strides)(x)\n",
        "    return x\n",
        "def build_model_A(input_shape, num_classes):\n",
        "    inp = keras.layers.Input(input_shape)\n",
        "    x = inp\n",
        "    x = conv_block(x, 16, 4)\n",
        "    x = conv_block(x, 16, 4)\n",
        "    x = conv_block(x, 32, 4)\n",
        "    x = conv_block(x, 32, 4)\n",
        "    x = keras.layers.Masking(mask_value=0)(x)\n",
        "    x = keras.layers.GRU(128, recurrent_dropout=0.1)(x)\n",
        "    x = keras.layers.Dense(num_classes, activation=\"sigmoid\")(x)\n",
        "    model = keras.models.Model(inp, x)\n",
        "    return model\n",
        "\n",
        "# Model B: CNN_Transformer_1lead\n",
        "def build_model_B(num_classes, input_shape):\n",
        "    # input_shape = (2000, 1)  # Each sample has 2000 timesteps and 1 feature per timestep\n",
        "    input_layer = keras.layers.Input(input_shape)\n",
        "\n",
        "    # Masking for padded/truncated data\n",
        "    i = keras.layers.Masking(mask_value=0)(input_layer)\n",
        "    # Conv1\n",
        "    i = keras.layers.Conv1D(filters=16, kernel_size=9, strides=1, padding=\"same\")(i)\n",
        "    i = keras.layers.BatchNormalization()(i)\n",
        "    i = keras.layers.ReLU()(i)\n",
        "    i = keras.layers.SpatialDropout1D(0.1)(i)\n",
        "    i = keras.layers.AveragePooling1D(2)(i)\n",
        "    # Conv2\n",
        "    i = keras.layers.Conv1D(filters=32, kernel_size=9, strides=1, padding=\"same\")(i)\n",
        "    i = keras.layers.BatchNormalization()(i)\n",
        "    i = keras.layers.ReLU()(i)\n",
        "    i = keras.layers.SpatialDropout1D(0.1)(i)\n",
        "    i = keras.layers.AveragePooling1D(2)(i)\n",
        "    # Conv3\n",
        "    i = keras.layers.Conv1D(filters=64, kernel_size=9, strides=1, padding=\"same\")(i)\n",
        "    i = keras.layers.BatchNormalization()(i)\n",
        "    i = keras.layers.ReLU()(i)\n",
        "    i = keras.layers.SpatialDropout1D(0.1)(i)\n",
        "    i = keras.layers.AveragePooling1D(2)(i)\n",
        "    # Channel Average Pooling and Reshaping\n",
        "    i = keras.layers.GlobalAveragePooling1D(data_format=\"channels_first\")(i)\n",
        "    i = keras.layers.Reshape((5, 50))(i)\n",
        "    # Encoder block/Attention mechanisms\n",
        "    i = transformer_encoder(i, input_shape=(5, 50), key_dim=50, num_heads=10, ff_dim=4, dropout=0.1)\n",
        "    i = transformer_encoder(i, input_shape=(5, 50), key_dim=50, num_heads=10, ff_dim=4, dropout=0.1)\n",
        "    i = transformer_encoder(i, input_shape=(5, 50), key_dim=50, num_heads=10, ff_dim=4, dropout=0.1)\n",
        "    # Flatten\n",
        "    i = keras.layers.Flatten()(i)\n",
        "    # Feedforward Softmax\n",
        "    i = keras.layers.Dense(num_classes, activation=\"sigmoid\")(i)\n",
        "    return keras.models.Model(inputs=input_layer, outputs=i)\n",
        "\n",
        "# Model C: vanilla_Transformer_1lead\n",
        "def transformer_encoder(input, input_shape, num_heads, key_dim, ff_dim, dropout):\n",
        "    # Multi-Head Attention\n",
        "    x = keras.layers.MultiHeadAttention(num_heads=num_heads, key_dim=key_dim, dropout=dropout, kernel_regularizer=regularizers.l2(0.001))(input, input)\n",
        "    # Add & Normalize\n",
        "    res = x + input\n",
        "    x = keras.layers.LayerNormalization(epsilon=1e-6)(res)\n",
        "    # Feed-Forward Layer\n",
        "    x = keras.layers.Flatten(input_shape=input_shape)(x)\n",
        "    x = keras.layers.Dense(units=ff_dim, activation='relu', kernel_regularizer=regularizers.l2(0.001))(x)\n",
        "    x = keras.layers.Dense(input_shape[0] * input_shape[1], kernel_regularizer=regularizers.l2(0.001))(x)\n",
        "    x = keras.layers.Reshape(input_shape)(x)\n",
        "    x = keras.layers.Dropout(rate=dropout)(x)\n",
        "    # Add & Normalize\n",
        "    x = x + res\n",
        "    x = keras.layers.LayerNormalization(epsilon=1e-6)(x)\n",
        "    return x\n",
        "\n",
        "def build_model_C(num_classes, input_shape, num_encoder_blocks, num_heads, key_dim, ff_dim, dropout):\n",
        "    inputs = keras.Input(shape=input_shape)\n",
        "    x = inputs\n",
        "    for _ in range(num_encoder_blocks):\n",
        "        x = transformer_encoder(x, input_shape, key_dim, num_heads, ff_dim, dropout)\n",
        "    x = keras.layers.Flatten(input_shape=input_shape)(x)\n",
        "    outputs = keras.layers.Dense(num_classes, activation='sigmoid')(x)\n",
        "    return keras.Model(inputs, outputs)\n",
        "\n",
        "# Model D: channel_attention_1lead\n",
        "from tensorflow.keras.layers import Input, Conv1D, GlobalAveragePooling1D, GlobalMaxPooling1D, Dense, Multiply, Add, Activation\n",
        "from tensorflow.keras.models import Model\n",
        "\n",
        "def channel_attention(input_feature, ratio=8):\n",
        "    channel = input_feature.shape[-1]\n",
        "\n",
        "    shared_layer_one = Dense(channel//ratio, activation='relu', kernel_initializer='he_normal', use_bias=True, bias_initializer='zeros')\n",
        "    shared_layer_two = Dense(channel, kernel_initializer='he_normal', use_bias=True, bias_initializer='zeros')\n",
        "\n",
        "    avg_pool = GlobalAveragePooling1D()(input_feature)\n",
        "    avg_pool = shared_layer_one(avg_pool)\n",
        "    avg_pool = shared_layer_two(avg_pool)\n",
        "\n",
        "    max_pool = GlobalMaxPooling1D()(input_feature)\n",
        "    max_pool = shared_layer_one(max_pool)\n",
        "    max_pool = shared_layer_two(max_pool)\n",
        "\n",
        "    cbam_feature = Add()([avg_pool, max_pool])\n",
        "    cbam_feature = Activation('sigmoid')(cbam_feature)\n",
        "\n",
        "    return Multiply()([input_feature, cbam_feature])\n",
        "\n",
        "def build_model_D(input_shape, num_classes):\n",
        "    inputs = Input(shape=input_shape)\n",
        "\n",
        "    x = Conv1D(64, kernel_size=3, padding='same', activation='relu')(inputs)\n",
        "    x = channel_attention(x)\n",
        "\n",
        "    x = Conv1D(128, kernel_size=3, padding='same', activation='relu')(x)\n",
        "    x = channel_attention(x)\n",
        "\n",
        "    x = Conv1D(256, kernel_size=3, padding='same', activation='relu')(x)\n",
        "    x = channel_attention(x)\n",
        "\n",
        "    x = GlobalAveragePooling1D()(x)\n",
        "    outputs = Dense(num_classes, activation='softmax')(x)\n",
        "\n",
        "    model = Model(inputs, outputs)\n",
        "    return model"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 47,
      "metadata": {
        "id": "8yIfrPc8R27b",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "20f85afa-471a-4cf4-f8fa-61e70ef7d105"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Model: \"model_5\"\n",
            "__________________________________________________________________________________________________\n",
            " Layer (type)                Output Shape                 Param #   Connected to                  \n",
            "==================================================================================================\n",
            " input_8 (InputLayer)        [(None, 40, 50)]             0         []                            \n",
            "                                                                                                  \n",
            " multi_head_attention_35 (M  (None, 40, 50)               40650     ['input_8[0][0]',             \n",
            " ultiHeadAttention)                                                  'input_8[0][0]']             \n",
            "                                                                                                  \n",
            " tf.__operators__.add_70 (T  (None, 40, 50)               0         ['multi_head_attention_35[0][0\n",
            " FOpLambda)                                                         ]',                           \n",
            "                                                                     'input_8[0][0]']             \n",
            "                                                                                                  \n",
            " layer_normalization_70 (La  (None, 40, 50)               100       ['tf.__operators__.add_70[0][0\n",
            " yerNormalization)                                                  ]']                           \n",
            "                                                                                                  \n",
            " flatten_40 (Flatten)        (None, 2000)                 0         ['layer_normalization_70[0][0]\n",
            "                                                                    ']                            \n",
            "                                                                                                  \n",
            " dense_75 (Dense)            (None, 24)                   48024     ['flatten_40[0][0]']          \n",
            "                                                                                                  \n",
            " dense_76 (Dense)            (None, 2000)                 50000     ['dense_75[0][0]']            \n",
            "                                                                                                  \n",
            " reshape_38 (Reshape)        (None, 40, 50)               0         ['dense_76[0][0]']            \n",
            "                                                                                                  \n",
            " dropout_35 (Dropout)        (None, 40, 50)               0         ['reshape_38[0][0]']          \n",
            "                                                                                                  \n",
            " tf.__operators__.add_71 (T  (None, 40, 50)               0         ['dropout_35[0][0]',          \n",
            " FOpLambda)                                                          'tf.__operators__.add_70[0][0\n",
            "                                                                    ]']                           \n",
            "                                                                                                  \n",
            " layer_normalization_71 (La  (None, 40, 50)               100       ['tf.__operators__.add_71[0][0\n",
            " yerNormalization)                                                  ]']                           \n",
            "                                                                                                  \n",
            " multi_head_attention_36 (M  (None, 40, 50)               40650     ['layer_normalization_71[0][0]\n",
            " ultiHeadAttention)                                                 ',                            \n",
            "                                                                     'layer_normalization_71[0][0]\n",
            "                                                                    ']                            \n",
            "                                                                                                  \n",
            " tf.__operators__.add_72 (T  (None, 40, 50)               0         ['multi_head_attention_36[0][0\n",
            " FOpLambda)                                                         ]',                           \n",
            "                                                                     'layer_normalization_71[0][0]\n",
            "                                                                    ']                            \n",
            "                                                                                                  \n",
            " layer_normalization_72 (La  (None, 40, 50)               100       ['tf.__operators__.add_72[0][0\n",
            " yerNormalization)                                                  ]']                           \n",
            "                                                                                                  \n",
            " flatten_41 (Flatten)        (None, 2000)                 0         ['layer_normalization_72[0][0]\n",
            "                                                                    ']                            \n",
            "                                                                                                  \n",
            " dense_77 (Dense)            (None, 24)                   48024     ['flatten_41[0][0]']          \n",
            "                                                                                                  \n",
            " dense_78 (Dense)            (None, 2000)                 50000     ['dense_77[0][0]']            \n",
            "                                                                                                  \n",
            " reshape_39 (Reshape)        (None, 40, 50)               0         ['dense_78[0][0]']            \n",
            "                                                                                                  \n",
            " dropout_36 (Dropout)        (None, 40, 50)               0         ['reshape_39[0][0]']          \n",
            "                                                                                                  \n",
            " tf.__operators__.add_73 (T  (None, 40, 50)               0         ['dropout_36[0][0]',          \n",
            " FOpLambda)                                                          'tf.__operators__.add_72[0][0\n",
            "                                                                    ]']                           \n",
            "                                                                                                  \n",
            " layer_normalization_73 (La  (None, 40, 50)               100       ['tf.__operators__.add_73[0][0\n",
            " yerNormalization)                                                  ]']                           \n",
            "                                                                                                  \n",
            " multi_head_attention_37 (M  (None, 40, 50)               40650     ['layer_normalization_73[0][0]\n",
            " ultiHeadAttention)                                                 ',                            \n",
            "                                                                     'layer_normalization_73[0][0]\n",
            "                                                                    ']                            \n",
            "                                                                                                  \n",
            " tf.__operators__.add_74 (T  (None, 40, 50)               0         ['multi_head_attention_37[0][0\n",
            " FOpLambda)                                                         ]',                           \n",
            "                                                                     'layer_normalization_73[0][0]\n",
            "                                                                    ']                            \n",
            "                                                                                                  \n",
            " layer_normalization_74 (La  (None, 40, 50)               100       ['tf.__operators__.add_74[0][0\n",
            " yerNormalization)                                                  ]']                           \n",
            "                                                                                                  \n",
            " flatten_42 (Flatten)        (None, 2000)                 0         ['layer_normalization_74[0][0]\n",
            "                                                                    ']                            \n",
            "                                                                                                  \n",
            " dense_79 (Dense)            (None, 24)                   48024     ['flatten_42[0][0]']          \n",
            "                                                                                                  \n",
            " dense_80 (Dense)            (None, 2000)                 50000     ['dense_79[0][0]']            \n",
            "                                                                                                  \n",
            " reshape_40 (Reshape)        (None, 40, 50)               0         ['dense_80[0][0]']            \n",
            "                                                                                                  \n",
            " dropout_37 (Dropout)        (None, 40, 50)               0         ['reshape_40[0][0]']          \n",
            "                                                                                                  \n",
            " tf.__operators__.add_75 (T  (None, 40, 50)               0         ['dropout_37[0][0]',          \n",
            " FOpLambda)                                                          'tf.__operators__.add_74[0][0\n",
            "                                                                    ]']                           \n",
            "                                                                                                  \n",
            " layer_normalization_75 (La  (None, 40, 50)               100       ['tf.__operators__.add_75[0][0\n",
            " yerNormalization)                                                  ]']                           \n",
            "                                                                                                  \n",
            " multi_head_attention_38 (M  (None, 40, 50)               40650     ['layer_normalization_75[0][0]\n",
            " ultiHeadAttention)                                                 ',                            \n",
            "                                                                     'layer_normalization_75[0][0]\n",
            "                                                                    ']                            \n",
            "                                                                                                  \n",
            " tf.__operators__.add_76 (T  (None, 40, 50)               0         ['multi_head_attention_38[0][0\n",
            " FOpLambda)                                                         ]',                           \n",
            "                                                                     'layer_normalization_75[0][0]\n",
            "                                                                    ']                            \n",
            "                                                                                                  \n",
            " layer_normalization_76 (La  (None, 40, 50)               100       ['tf.__operators__.add_76[0][0\n",
            " yerNormalization)                                                  ]']                           \n",
            "                                                                                                  \n",
            " flatten_43 (Flatten)        (None, 2000)                 0         ['layer_normalization_76[0][0]\n",
            "                                                                    ']                            \n",
            "                                                                                                  \n",
            " dense_81 (Dense)            (None, 24)                   48024     ['flatten_43[0][0]']          \n",
            "                                                                                                  \n",
            " dense_82 (Dense)            (None, 2000)                 50000     ['dense_81[0][0]']            \n",
            "                                                                                                  \n",
            " reshape_41 (Reshape)        (None, 40, 50)               0         ['dense_82[0][0]']            \n",
            "                                                                                                  \n",
            " dropout_38 (Dropout)        (None, 40, 50)               0         ['reshape_41[0][0]']          \n",
            "                                                                                                  \n",
            " tf.__operators__.add_77 (T  (None, 40, 50)               0         ['dropout_38[0][0]',          \n",
            " FOpLambda)                                                          'tf.__operators__.add_76[0][0\n",
            "                                                                    ]']                           \n",
            "                                                                                                  \n",
            " layer_normalization_77 (La  (None, 40, 50)               100       ['tf.__operators__.add_77[0][0\n",
            " yerNormalization)                                                  ]']                           \n",
            "                                                                                                  \n",
            " multi_head_attention_39 (M  (None, 40, 50)               40650     ['layer_normalization_77[0][0]\n",
            " ultiHeadAttention)                                                 ',                            \n",
            "                                                                     'layer_normalization_77[0][0]\n",
            "                                                                    ']                            \n",
            "                                                                                                  \n",
            " tf.__operators__.add_78 (T  (None, 40, 50)               0         ['multi_head_attention_39[0][0\n",
            " FOpLambda)                                                         ]',                           \n",
            "                                                                     'layer_normalization_77[0][0]\n",
            "                                                                    ']                            \n",
            "                                                                                                  \n",
            " layer_normalization_78 (La  (None, 40, 50)               100       ['tf.__operators__.add_78[0][0\n",
            " yerNormalization)                                                  ]']                           \n",
            "                                                                                                  \n",
            " flatten_44 (Flatten)        (None, 2000)                 0         ['layer_normalization_78[0][0]\n",
            "                                                                    ']                            \n",
            "                                                                                                  \n",
            " dense_83 (Dense)            (None, 24)                   48024     ['flatten_44[0][0]']          \n",
            "                                                                                                  \n",
            " dense_84 (Dense)            (None, 2000)                 50000     ['dense_83[0][0]']            \n",
            "                                                                                                  \n",
            " reshape_42 (Reshape)        (None, 40, 50)               0         ['dense_84[0][0]']            \n",
            "                                                                                                  \n",
            " dropout_39 (Dropout)        (None, 40, 50)               0         ['reshape_42[0][0]']          \n",
            "                                                                                                  \n",
            " tf.__operators__.add_79 (T  (None, 40, 50)               0         ['dropout_39[0][0]',          \n",
            " FOpLambda)                                                          'tf.__operators__.add_78[0][0\n",
            "                                                                    ]']                           \n",
            "                                                                                                  \n",
            " layer_normalization_79 (La  (None, 40, 50)               100       ['tf.__operators__.add_79[0][0\n",
            " yerNormalization)                                                  ]']                           \n",
            "                                                                                                  \n",
            " multi_head_attention_40 (M  (None, 40, 50)               40650     ['layer_normalization_79[0][0]\n",
            " ultiHeadAttention)                                                 ',                            \n",
            "                                                                     'layer_normalization_79[0][0]\n",
            "                                                                    ']                            \n",
            "                                                                                                  \n",
            " tf.__operators__.add_80 (T  (None, 40, 50)               0         ['multi_head_attention_40[0][0\n",
            " FOpLambda)                                                         ]',                           \n",
            "                                                                     'layer_normalization_79[0][0]\n",
            "                                                                    ']                            \n",
            "                                                                                                  \n",
            " layer_normalization_80 (La  (None, 40, 50)               100       ['tf.__operators__.add_80[0][0\n",
            " yerNormalization)                                                  ]']                           \n",
            "                                                                                                  \n",
            " flatten_45 (Flatten)        (None, 2000)                 0         ['layer_normalization_80[0][0]\n",
            "                                                                    ']                            \n",
            "                                                                                                  \n",
            " dense_85 (Dense)            (None, 24)                   48024     ['flatten_45[0][0]']          \n",
            "                                                                                                  \n",
            " dense_86 (Dense)            (None, 2000)                 50000     ['dense_85[0][0]']            \n",
            "                                                                                                  \n",
            " reshape_43 (Reshape)        (None, 40, 50)               0         ['dense_86[0][0]']            \n",
            "                                                                                                  \n",
            " dropout_40 (Dropout)        (None, 40, 50)               0         ['reshape_43[0][0]']          \n",
            "                                                                                                  \n",
            " tf.__operators__.add_81 (T  (None, 40, 50)               0         ['dropout_40[0][0]',          \n",
            " FOpLambda)                                                          'tf.__operators__.add_80[0][0\n",
            "                                                                    ]']                           \n",
            "                                                                                                  \n",
            " layer_normalization_81 (La  (None, 40, 50)               100       ['tf.__operators__.add_81[0][0\n",
            " yerNormalization)                                                  ]']                           \n",
            "                                                                                                  \n",
            " multi_head_attention_41 (M  (None, 40, 50)               40650     ['layer_normalization_81[0][0]\n",
            " ultiHeadAttention)                                                 ',                            \n",
            "                                                                     'layer_normalization_81[0][0]\n",
            "                                                                    ']                            \n",
            "                                                                                                  \n",
            " tf.__operators__.add_82 (T  (None, 40, 50)               0         ['multi_head_attention_41[0][0\n",
            " FOpLambda)                                                         ]',                           \n",
            "                                                                     'layer_normalization_81[0][0]\n",
            "                                                                    ']                            \n",
            "                                                                                                  \n",
            " layer_normalization_82 (La  (None, 40, 50)               100       ['tf.__operators__.add_82[0][0\n",
            " yerNormalization)                                                  ]']                           \n",
            "                                                                                                  \n",
            " flatten_46 (Flatten)        (None, 2000)                 0         ['layer_normalization_82[0][0]\n",
            "                                                                    ']                            \n",
            "                                                                                                  \n",
            " dense_87 (Dense)            (None, 24)                   48024     ['flatten_46[0][0]']          \n",
            "                                                                                                  \n",
            " dense_88 (Dense)            (None, 2000)                 50000     ['dense_87[0][0]']            \n",
            "                                                                                                  \n",
            " reshape_44 (Reshape)        (None, 40, 50)               0         ['dense_88[0][0]']            \n",
            "                                                                                                  \n",
            " dropout_41 (Dropout)        (None, 40, 50)               0         ['reshape_44[0][0]']          \n",
            "                                                                                                  \n",
            " tf.__operators__.add_83 (T  (None, 40, 50)               0         ['dropout_41[0][0]',          \n",
            " FOpLambda)                                                          'tf.__operators__.add_82[0][0\n",
            "                                                                    ]']                           \n",
            "                                                                                                  \n",
            " layer_normalization_83 (La  (None, 40, 50)               100       ['tf.__operators__.add_83[0][0\n",
            " yerNormalization)                                                  ]']                           \n",
            "                                                                                                  \n",
            " multi_head_attention_42 (M  (None, 40, 50)               40650     ['layer_normalization_83[0][0]\n",
            " ultiHeadAttention)                                                 ',                            \n",
            "                                                                     'layer_normalization_83[0][0]\n",
            "                                                                    ']                            \n",
            "                                                                                                  \n",
            " tf.__operators__.add_84 (T  (None, 40, 50)               0         ['multi_head_attention_42[0][0\n",
            " FOpLambda)                                                         ]',                           \n",
            "                                                                     'layer_normalization_83[0][0]\n",
            "                                                                    ']                            \n",
            "                                                                                                  \n",
            " layer_normalization_84 (La  (None, 40, 50)               100       ['tf.__operators__.add_84[0][0\n",
            " yerNormalization)                                                  ]']                           \n",
            "                                                                                                  \n",
            " flatten_47 (Flatten)        (None, 2000)                 0         ['layer_normalization_84[0][0]\n",
            "                                                                    ']                            \n",
            "                                                                                                  \n",
            " dense_89 (Dense)            (None, 24)                   48024     ['flatten_47[0][0]']          \n",
            "                                                                                                  \n",
            " dense_90 (Dense)            (None, 2000)                 50000     ['dense_89[0][0]']            \n",
            "                                                                                                  \n",
            " reshape_45 (Reshape)        (None, 40, 50)               0         ['dense_90[0][0]']            \n",
            "                                                                                                  \n",
            " dropout_42 (Dropout)        (None, 40, 50)               0         ['reshape_45[0][0]']          \n",
            "                                                                                                  \n",
            " tf.__operators__.add_85 (T  (None, 40, 50)               0         ['dropout_42[0][0]',          \n",
            " FOpLambda)                                                          'tf.__operators__.add_84[0][0\n",
            "                                                                    ]']                           \n",
            "                                                                                                  \n",
            " layer_normalization_85 (La  (None, 40, 50)               100       ['tf.__operators__.add_85[0][0\n",
            " yerNormalization)                                                  ]']                           \n",
            "                                                                                                  \n",
            " flatten_48 (Flatten)        (None, 2000)                 0         ['layer_normalization_85[0][0]\n",
            "                                                                    ']                            \n",
            "                                                                                                  \n",
            " dense_91 (Dense)            (None, 26)                   52026     ['flatten_48[0][0]']          \n",
            "                                                                                                  \n",
            "==================================================================================================\n",
            "Total params: 1163018 (4.44 MB)\n",
            "Trainable params: 1163018 (4.44 MB)\n",
            "Non-trainable params: 0 (0.00 Byte)\n",
            "__________________________________________________________________________________________________\n"
          ]
        }
      ],
      "source": [
        "# == Initialize model ==\n",
        "\n",
        "# Explicitly specify the GPU device\n",
        "physical_devices = tf.config.experimental.list_physical_devices(\"GPU\")\n",
        "if len(physical_devices) > 0:\n",
        "    tf.config.experimental.set_memory_growth(physical_devices[0], True)\n",
        "\n",
        "input_shape = X_train_balanced.shape\n",
        "num_encoder_blocks = 8\n",
        "num_heads = 8 # 8\n",
        "key_dim = 25 # 25\n",
        "ff_dim = 24 # 24\n",
        "dropout = 0.1\n",
        "\n",
        "# Reshape\n",
        "X_train = X_train.reshape(-1, 40, 50) # (-1, 2000, 1) (-1, 10, 200) (-1, 40, 50)\n",
        "X_test = X_test.reshape(-1, 40, 50)\n",
        "X_train_balanced = X_train_balanced.reshape(-1, 40, 50)\n",
        "X_test_balanced = X_test_balanced.reshape(-1, 40, 50)\n",
        "\n",
        "model = build_model_C(num_classes=NUM_CLASSES, input_shape=input_shape[1:], num_encoder_blocks=num_encoder_blocks, num_heads=num_heads, key_dim=key_dim, ff_dim=ff_dim, dropout=dropout)\n",
        "# model = build_model_B(num_classes=NUM_CLASSES, input_shape=input_shape[1:])\n",
        "\n",
        "model.summary()"
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "from tensorflow.keras.callbacks import Callback\n",
        "\n",
        "class ReduceLREveryNthEpoch(Callback):\n",
        "    def __init__(self, factor=0.5, n_epochs=10, min_lr=0.000005):\n",
        "        super(ReduceLREveryNthEpoch, self).__init__()\n",
        "        self.factor = factor\n",
        "        self.n_epochs = n_epochs\n",
        "        self.min_lr = min_lr\n",
        "        self.counter = 0\n",
        "\n",
        "    def on_epoch_end(self, epoch, logs=None):\n",
        "        self.counter += 1\n",
        "        if self.counter == self.n_epochs:\n",
        "            lr = self.model.optimizer.lr\n",
        "            new_lr = max(lr * self.factor, self.min_lr)\n",
        "            self.model.optimizer.lr = new_lr\n",
        "            self.counter = 0\n",
        "            print(f'\\nEpoch {epoch + 1}: Reduced learning rate to {new_lr.numpy()}.')\n",
        "\n",
        "    def on_train_end(self, logs=None):\n",
        "        print(f'\\nFinal learning rate: {self.model.optimizer.lr.numpy()}.')\n",
        "\n",
        "reduce_lr = ReduceLREveryNthEpoch(factor=0.5, n_epochs=10, min_lr=0.000005)"
      ],
      "metadata": {
        "id": "TFcH8tkSNezv"
      },
      "execution_count": 36,
      "outputs": []
    },
    {
      "cell_type": "code",
      "execution_count": 48,
      "metadata": {
        "id": "Z3jbMs35jnOL",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "6e7f148f-6e5b-47c7-e7b3-fb9b93d16f97"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Number of GPUs available: 1\n",
            "Number of training data examples: 44192\n",
            "Number of classes: 26\n",
            "Shape of training data: (44192, 40, 50)\n",
            "Epochs: 50\n",
            "Learning rate: 0.001\n",
            "Batch size: 128\n",
            "Epoch 1/50\n",
            "259/259 [==============================] - 37s 65ms/step - loss: 0.4407 - accuracy: 0.2403 - val_loss: 0.2353 - val_accuracy: 0.3265 - lr: 0.0010\n",
            "Epoch 2/50\n",
            "259/259 [==============================] - 16s 60ms/step - loss: 0.2120 - accuracy: 0.3163 - val_loss: 0.2040 - val_accuracy: 0.3357 - lr: 0.0010\n",
            "Epoch 3/50\n",
            "259/259 [==============================] - 15s 59ms/step - loss: 0.1946 - accuracy: 0.3489 - val_loss: 0.1957 - val_accuracy: 0.3249 - lr: 0.0010\n",
            "Epoch 4/50\n",
            "259/259 [==============================] - 15s 59ms/step - loss: 0.1878 - accuracy: 0.3660 - val_loss: 0.1915 - val_accuracy: 0.3703 - lr: 0.0010\n",
            "Epoch 5/50\n",
            "259/259 [==============================] - 15s 59ms/step - loss: 0.1832 - accuracy: 0.3792 - val_loss: 0.1887 - val_accuracy: 0.3682 - lr: 0.0010\n",
            "Epoch 6/50\n",
            "259/259 [==============================] - 15s 59ms/step - loss: 0.1799 - accuracy: 0.3865 - val_loss: 0.1858 - val_accuracy: 0.3626 - lr: 0.0010\n",
            "Epoch 7/50\n",
            "259/259 [==============================] - 15s 60ms/step - loss: 0.1778 - accuracy: 0.3925 - val_loss: 0.1850 - val_accuracy: 0.3716 - lr: 0.0010\n",
            "Epoch 8/50\n",
            "259/259 [==============================] - 15s 60ms/step - loss: 0.1760 - accuracy: 0.3967 - val_loss: 0.1848 - val_accuracy: 0.3952 - lr: 0.0010\n",
            "Epoch 9/50\n",
            "259/259 [==============================] - 15s 60ms/step - loss: 0.1743 - accuracy: 0.4062 - val_loss: 0.1837 - val_accuracy: 0.3919 - lr: 0.0010\n",
            "Epoch 10/50\n",
            "259/259 [==============================] - 15s 59ms/step - loss: 0.1728 - accuracy: 0.4099 - val_loss: 0.1823 - val_accuracy: 0.3801 - lr: 0.0010\n",
            "Epoch 11/50\n",
            "259/259 [==============================] - 15s 59ms/step - loss: 0.1713 - accuracy: 0.4173 - val_loss: 0.1809 - val_accuracy: 0.3898 - lr: 0.0010\n",
            "Epoch 12/50\n",
            "259/259 [==============================] - 15s 58ms/step - loss: 0.1702 - accuracy: 0.4219 - val_loss: 0.1812 - val_accuracy: 0.4030 - lr: 0.0010\n",
            "Epoch 13/50\n",
            "259/259 [==============================] - 15s 60ms/step - loss: 0.1691 - accuracy: 0.4287 - val_loss: 0.1796 - val_accuracy: 0.4142 - lr: 0.0010\n",
            "Epoch 14/50\n",
            "259/259 [==============================] - 15s 59ms/step - loss: 0.1680 - accuracy: 0.4299 - val_loss: 0.1788 - val_accuracy: 0.4003 - lr: 0.0010\n",
            "Epoch 15/50\n",
            "259/259 [==============================] - 15s 59ms/step - loss: 0.1669 - accuracy: 0.4337 - val_loss: 0.1783 - val_accuracy: 0.4207 - lr: 0.0010\n",
            "Epoch 16/50\n",
            "259/259 [==============================] - 15s 59ms/step - loss: 0.1661 - accuracy: 0.4392 - val_loss: 0.1775 - val_accuracy: 0.4284 - lr: 0.0010\n",
            "Epoch 17/50\n",
            "259/259 [==============================] - 15s 59ms/step - loss: 0.1653 - accuracy: 0.4422 - val_loss: 0.1771 - val_accuracy: 0.4088 - lr: 0.0010\n",
            "Epoch 18/50\n",
            "259/259 [==============================] - 15s 59ms/step - loss: 0.1643 - accuracy: 0.4443 - val_loss: 0.1763 - val_accuracy: 0.4138 - lr: 0.0010\n",
            "Epoch 19/50\n",
            "259/259 [==============================] - 15s 59ms/step - loss: 0.1636 - accuracy: 0.4491 - val_loss: 0.1758 - val_accuracy: 0.4340 - lr: 0.0010\n",
            "Epoch 20/50\n",
            "259/259 [==============================] - 15s 58ms/step - loss: 0.1633 - accuracy: 0.4488 - val_loss: 0.1762 - val_accuracy: 0.4056 - lr: 0.0010\n",
            "Epoch 21/50\n",
            "259/259 [==============================] - 15s 59ms/step - loss: 0.1625 - accuracy: 0.4528 - val_loss: 0.1757 - val_accuracy: 0.4238 - lr: 0.0010\n",
            "Epoch 22/50\n",
            "259/259 [==============================] - 15s 59ms/step - loss: 0.1567 - accuracy: 0.4681 - val_loss: 0.1734 - val_accuracy: 0.4350 - lr: 5.0000e-04\n",
            "Epoch 23/50\n",
            "259/259 [==============================] - 15s 59ms/step - loss: 0.1553 - accuracy: 0.4712 - val_loss: 0.1732 - val_accuracy: 0.4318 - lr: 5.0000e-04\n",
            "Epoch 24/50\n",
            "259/259 [==============================] - 15s 58ms/step - loss: 0.1547 - accuracy: 0.4746 - val_loss: 0.1734 - val_accuracy: 0.4350 - lr: 5.0000e-04\n",
            "Epoch 25/50\n",
            "259/259 [==============================] - 15s 58ms/step - loss: 0.1546 - accuracy: 0.4752 - val_loss: 0.1740 - val_accuracy: 0.4402 - lr: 5.0000e-04\n",
            "Epoch 26/50\n",
            "259/259 [==============================] - 15s 59ms/step - loss: 0.1502 - accuracy: 0.4897 - val_loss: 0.1731 - val_accuracy: 0.4383 - lr: 2.5000e-04\n",
            "Epoch 27/50\n",
            "259/259 [==============================] - 15s 58ms/step - loss: 0.1494 - accuracy: 0.4903 - val_loss: 0.1734 - val_accuracy: 0.4362 - lr: 2.5000e-04\n",
            "Epoch 28/50\n",
            "259/259 [==============================] - 15s 58ms/step - loss: 0.1468 - accuracy: 0.5001 - val_loss: 0.1735 - val_accuracy: 0.4345 - lr: 1.2500e-04\n",
            "Epoch 29/50\n",
            "259/259 [==============================] - 15s 58ms/step - loss: 0.1462 - accuracy: 0.5024 - val_loss: 0.1735 - val_accuracy: 0.4385 - lr: 1.2500e-04\n",
            "Epoch 30/50\n",
            "259/259 [==============================] - 15s 58ms/step - loss: 0.1447 - accuracy: 0.5066 - val_loss: 0.1737 - val_accuracy: 0.4393 - lr: 6.2500e-05\n",
            "Epoch 31/50\n",
            "259/259 [==============================] - 15s 58ms/step - loss: 0.1445 - accuracy: 0.5084 - val_loss: 0.1740 - val_accuracy: 0.4388 - lr: 6.2500e-05\n",
            "Epoch 32/50\n",
            "259/259 [==============================] - 15s 59ms/step - loss: 0.1437 - accuracy: 0.5115 - val_loss: 0.1740 - val_accuracy: 0.4361 - lr: 3.1250e-05\n",
            "Epoch 33/50\n",
            "259/259 [==============================] - 15s 58ms/step - loss: 0.1435 - accuracy: 0.5113 - val_loss: 0.1746 - val_accuracy: 0.4375 - lr: 3.1250e-05\n",
            "Epoch 34/50\n",
            "259/259 [==============================] - 15s 58ms/step - loss: 0.1431 - accuracy: 0.5143 - val_loss: 0.1743 - val_accuracy: 0.4385 - lr: 1.5625e-05\n",
            "Epoch 35/50\n",
            "259/259 [==============================] - 15s 58ms/step - loss: 0.1429 - accuracy: 0.5126 - val_loss: 0.1744 - val_accuracy: 0.4366 - lr: 1.5625e-05\n",
            "Epoch 36/50\n",
            "259/259 [==============================] - 15s 58ms/step - loss: 0.1427 - accuracy: 0.5138 - val_loss: 0.1745 - val_accuracy: 0.4369 - lr: 7.8125e-06\n",
            "Epoch 36: early stopping\n"
          ]
        }
      ],
      "source": [
        "# == Train model ==\n",
        "\n",
        "EPOCHS = 50\n",
        "\n",
        "# Check if a GPU is available\n",
        "print(\"Number of GPUs available:\", len(tf.config.experimental.list_physical_devices(\"GPU\")))\n",
        "print(f\"Number of training data examples: {len(X_train_balanced)}\")\n",
        "print(f\"Number of classes: {NUM_CLASSES}\")\n",
        "print(f\"Shape of training data: {input_shape}\")\n",
        "print(f\"Epochs: {EPOCHS}\")\n",
        "print(f\"Learning rate: {LEARNING_RATE}\")\n",
        "print(f\"Batch size: {BATCH_SIZE}\")\n",
        "\n",
        "callbacks = [\n",
        "    keras.callbacks.ModelCheckpoint(f\"Model_{NUM_CLASSES}classes.h5\", save_best_only=True, monitor=\"val_loss\"),\n",
        "    keras.callbacks.ReduceLROnPlateau(monitor=\"val_loss\", factor=0.5, patience=3, min_lr=0.000005),\n",
        "    # reduce_lr,\n",
        "    keras.callbacks.EarlyStopping(monitor=\"val_loss\", patience=5, verbose=1),\n",
        "]\n",
        "\n",
        "optimizer = Adam(learning_rate=LEARNING_RATE)\n",
        "# optimizer = Adam(learning_rate=0.01)\n",
        "\n",
        "\n",
        "# loss=\"binary_crossentropy\", metrics=[\"binary_accuracy\"]; sparse_categorical_crossentropy, metrics=[\"sparse_categorical_accuracy\"]\n",
        "model.compile(optimizer=optimizer, loss=\"binary_crossentropy\", metrics=[\"accuracy\"])\n",
        "history = model.fit(X_train_balanced, Y_train_balanced, batch_size=BATCH_SIZE, epochs=EPOCHS, callbacks=callbacks, validation_split=0.25, verbose=1)\n",
        "\n",
        "train_accuracy = history.history[\"accuracy\"] # list\n",
        "val_accuracy = history.history[\"val_accuracy\"] # list\n",
        "train_loss = history.history[\"loss\"] # list\n",
        "val_loss = history.history[\"val_loss\"] # list"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 49,
      "metadata": {
        "id": "Rtmwe0Z-qO2n",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        },
        "outputId": "b007122f-809d-4069-da58-f94637c01db1"
      },
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 1200x600 with 1 Axes>"
            ],
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/EAAAIjCAYAAABLQJsFAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAChGUlEQVR4nOzdd3yN5//H8ddJSCJG7BBbqE1qVKk9So0Wpag9qltVlbZU0aFfVVW01aGoVaVoVc2gVBW1V9WIvVciEZn374/rl3EkIYkkJ+P9fDzuR859n/vc5zonJ633ua7rc9ksy7IQERERERERkXTPydENEBEREREREZHEUYgXERERERERySAU4kVEREREREQyCIV4ERERERERkQxCIV5EREREREQkg1CIFxEREREREckgFOJFREREREREMgiFeBEREREREZEMQiFeREREREREJINQiBcRkXStb9++lC5dOlmPHTNmDDabLWUblM6cPHkSm83GrFmz0vy5bTYbY8aMid6fNWsWNpuNkydP3vexpUuXpm/fvinangf5rIiIiGQUCvEiIpIsNpstUdvGjRsd3dQsb/DgwdhsNo4dO5bgOSNHjsRms7Fv3740bFnSnT9/njFjxrBnzx5HNyVehw8fxmaz4ebmxs2bNx3dHBERyYQU4kVEJFnmzJljt7Vs2TLe45UqVXqg5/n22285cuRIsh47atQogoODH+j5M4MePXoAMH/+/ATPWbBgAdWqVaN69erJfp5evXoRHBxMqVKlkn2N+zl//jxjx46NN8Q/yGclpcydO5ciRYoAsHjxYoe2RUREMqdsjm6AiIhkTD179rTb//vvv1m7dm2c43e7ffs27u7uiX6e7NmzJ6t9ANmyZSNbNv2vrm7dupQrV44FCxYwevToOPdv3boVPz8/Pv744wd6HmdnZ5ydnR/oGg/iQT4rKcGyLObPn8+zzz6Ln58f8+bNY+DAgQ5tU0KCgoLImTOno5shIiLJoJ54ERFJNU2aNKFq1ars3LmTRo0a4e7uzjvvvAPAL7/8Qtu2bfHy8sLV1RVvb2/ef/99IiIi7K5x9zznqDngEydO5JtvvsHb2xtXV1fq1KnDjh077B4b35x4m83GK6+8wrJly6hatSqurq5UqVKFVatWxWn/xo0bqV27Nm5ubnh7e/P1118nep795s2b6dKlCyVLlsTV1ZUSJUrw+uuvxxkZ0LdvX3LlysW5c+fo0KEDuXLlolChQgwbNizOe3Hz5k369u2Lh4cHefPmpU+fPokest2jRw/+/fdfdu3aFee++fPnY7PZ6N69O6GhoYwePZpatWrh4eFBzpw5adiwIRs2bLjvc8Q3J96yLD744AOKFy+Ou7s7TZs25eDBg3Eee/36dYYNG0a1atXIlSsXefLk4YknnmDv3r3R52zcuJE6deoA0K9fv+gpG1H1AOKbEx8UFMQbb7xBiRIlcHV1pUKFCkycOBHLsuzOS8rnIiFbtmzh5MmTdOvWjW7durFp0ybOnj0b57zIyEg+//xzqlWrhpubG4UKFaJ169b8888/dufNnTuXRx55BHd3d/Lly0ejRo1Ys2aNXZtj1ySIcne9gajfyx9//MFLL71E4cKFKV68OACnTp3ipZdeokKFCuTIkYMCBQrQpUuXeOsa3Lx5k9dff53SpUvj6upK8eLF6d27N1evXiUwMJCcOXPy2muvxXnc2bNncXZ2Zvz48Yl8J0VE5F7UPSEiIqnq2rVrPPHEE3Tr1o2ePXvi6ekJmGCRK1cuhg4dSq5cuVi/fj2jR48mICCATz755L7XnT9/Prdu3eL555/HZrMxYcIEOnXqxIkTJ+7bI/vnn3+yZMkSXnrpJXLnzs2UKVN4+umnOX36NAUKFABg9+7dtG7dmqJFizJ27FgiIiIYN24chQoVStTrXrRoEbdv3+bFF1+kQIECbN++nalTp3L27FkWLVpkd25ERAStWrWibt26TJw4kXXr1vHpp5/i7e3Niy++CJgw/NRTT/Hnn3/ywgsvUKlSJZYuXUqfPn0S1Z4ePXowduxY5s+fT82aNe2e+6effqJhw4aULFmSq1ev8t1339G9e3eee+45bt26xYwZM2jVqhXbt2/Hx8cnUc8XZfTo0XzwwQe0adOGNm3asGvXLh5//HFCQ0Ptzjtx4gTLli2jS5culClThkuXLvH111/TuHFjDh06hJeXF5UqVWLcuHGMHj2aQYMG0bBhQwDq168f73NblsWTTz7Jhg0bGDBgAD4+PqxevZo333yTc+fO8dlnn9mdn5jPxb3MmzcPb29v6tSpQ9WqVXF3d2fBggW8+eabducNGDCAWbNm8cQTTzBw4EDCw8PZvHkzf//9N7Vr1wZg7NixjBkzhvr16zNu3DhcXFzYtm0b69ev5/HHH0/0+x/bSy+9RKFChRg9ejRBQUEA7Nixg7/++otu3bpRvHhxTp48yVdffUWTJk04dOhQ9KiZwMBAGjZsyOHDh+nfvz81a9bk6tWr/Prrr5w9exYfHx86duzIwoULmTRpkt2IjAULFmBZVvS0DhEReUCWiIhICnj55Zetu/+30rhxYwuwpk+fHuf827dvxzn2/PPPW+7u7tadO3eij/Xp08cqVapU9L6fn58FWAUKFLCuX78effyXX36xAGv58uXRx9577704bQIsFxcX69ixY9HH9u7dawHW1KlTo4+1b9/ecnd3t86dOxd97OjRo1a2bNniXDM+8b2+8ePHWzabzTp16pTd6wOscePG2Z378MMPW7Vq1YreX7ZsmQVYEyZMiD4WHh5uNWzY0AKsmTNn3rdNderUsYoXL25FREREH1u1apUFWF9//XX0NUNCQuwed+PGDcvT09Pq37+/3XHAeu+996L3Z86caQGWn5+fZVmWdfnyZcvFxcVq27atFRkZGX3eO++8YwFWnz59oo/duXPHrl2WZX7Xrq6udu/Njh07Eny9d39Wot6zDz74wO68zp07Wzabze4zkNjPRUJCQ0OtAgUKWCNHjow+9uyzz1o1atSwO2/9+vUWYA0ePDjONaLeo6NHj1pOTk5Wx44d47wnsd/Hu9//KKVKlbJ7b6N+Lw0aNLDCw8Ptzo3vc7p161YLsH744YfoY6NHj7YAa8mSJQm2e/Xq1RZgrVy50u7+6tWrW40bN47zOBERSR4NpxcRkVTl6upKv3794hzPkSNH9O1bt25x9epVGjZsyO3bt/n333/ve92uXbuSL1++6P2oXtkTJ07c97EtWrTA29s7er969erkyZMn+rERERGsW7eODh064OXlFX1euXLleOKJJ+57fbB/fUFBQVy9epX69etjWRa7d++Oc/4LL7xgt9+wYUO71/L777+TLVu26J55MHPQX3311US1B0wdg7Nnz7Jp06boY/Pnz8fFxYUuXbpEX9PFxQUww76vX79OeHg4tWvXjnco/r2sW7eO0NBQXn31VbspCEOGDIlzrqurK05O5p8lERERXLt2jVy5clGhQoUkP2+U33//HWdnZwYPHmx3/I033sCyLFauXGl3/H6fi3tZuXIl165do3v37tHHunfvzt69e+2mD/z888/YbDbee++9ONeIeo+WLVtG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SpaENWugQgVHt0pEJMVoiTkRERERyRy2boWGDU2Ar1wZtmxRgBeRTEchXkREREQyvlWrzJz3Gzfg0Udh0yYoXtzRrRIRSXEK8SIiIiKSsc2fD+3bw+3bZij9unVQoICjWyUikio0J15ERERE0pewMBPIg4PNdq/bR4/C//5nHte9O8yaBS4uDm2+iEhqUogXERERkZR38SJs2wb//APXr98/jMe+HRGR9Od79VWYPBmcNNBURDI3hXgREREReTDBwbB7N/z9twnuf/8Np0+nzLVz5AB3d/MzoduPPw4DB4LNljLPKSKSjinEi4iIiEjiWRYcOxYT2Ldtgz17IDzc/jybzVSIr1vXFJi7VwhP6Larq4K5iMhdFOJFREREJGHXr8P27TGBfds2c+xuhQubqvB165qftWtDnjxp314RkUxOIV5EREREjLAw2L/fflj8f//FPc/VFWrWjAnsdetCqVLqNRcRSQMK8SIiIiJZkWWBnx/s3BnTw/7PP3DnTtxzy5WLCet160KNGqoALyLiIArxIiIiIpldRIRZim3Xrpht9264eTPuuXnzxoT1unXhkUegYMG0brGIiCRAIV5EREQkMwkLg8OH7QP7nj0QFBT3XBcXqFbNBPWonvby5bVMm4hIOqYQLyIiIpJR3bkDBw7YB/Z9+yAkJO657u7g42PmskdtlStD9uxp3mwREUk+hXgRERGRjCAoCPbutQ/sBw/GXdoNTFX42GG9Zk146CFwdk77douISIpSiBcRERFJrw4fhvHjTcG5f/81xejuVqAA1KplH9jLlNGQeBGRTEohXkRERCQ92rULWra0X5PdyytuD3vx4lraTUQkC1GIFxEREUlvtm+HVq1M9fhHHoExY+Dhh6FIEUe3TEREHEwhXkRERCQ9+esvaN0abt2C+vVh5Uozx11ERATQZCkRERGR9GLTJtMDf+sWNG4Mq1crwIuIiB2FeBEREZH0YP16eOIJCAyEFi3g998hVy5Ht0pERNIZhXgRERERR1u9Gtq2hdu3zVD6X38167qLiIjcRSFeRERExJF++w2efBLu3IH27WHZMsiRw9GtEhGRdEohXkRERMRRli2DTp0gNBQ6doTFi8HV1dGtEhGRdEwhXkRERMQRFi2CLl0gLAy6doWFC8HFxdGtEhGRdE4hXkRERCStzZ8P3bpBeDj07Alz50L27I5u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KcRLwq5cga+/NrdHjTLrw4uIiIiIiIjDKMRLwqZMgdu3oXZtePxxR7dGREREREQky1OIl4T99pv5+frr6oUXERERERFJBxTiJX7BwbB/v7ndsKFj2yIiIiIiIiKAQrwkZPduiIgAT08oXtzRrREREREREREU4iUhO3aYn3XqaCi9iIiIiIhIOqEQL/GLHeJFREREREQkXVCIl/gpxIuIiIiIiKQ7CvES182b8N9/5rZCvIiIiIiISLqhEC9x7dxpfpYpAwULOrYtIiIiIiIiEk0hXuLSUHoREREREZF0SSFe4lKIFxERERERSZcU4iUuhXgREREREZF0SSFe7F26BGfOmLXha9Z0dGtEREREREQkFoV4sRfVC1+pEuTO7di2iIiIiIiIiB2FeLGnofQiIiIiIiLplkK82FOIFxERERERSbcU4iWGZSnEi4iIiIiIpGMK8RLj1Cm4ehWyZ4caNRzdGhEREREREbmLQrzEiOqFr14dXF0d2xYRERERERGJQyFeYmgovYiIiIiISLqmEC8xFOJFRERERETSNYV4MSIjYedOc1shXkREREREJF1yeIj/4osvKF26NG5ubtStW5ft27cneO6SJUuoXbs2efPmJWfOnPj4+DBnzhy7cyzLYvTo0RQtWpQcOXLQokULjh49mtovI+M7cgRu3QJ3d6hUydGtERERERERkXg4NMQvXLiQoUOH8t5777Fr1y5q1KhBq1atuHz5crzn58+fn5EjR7J161b27dtHv3796NevH6tXr44+Z8KECUyZMoXp06ezbds2cubMSatWrbhz505avayMKWoofc2akC2bY9siIiIiIiIi8bJZlmU56snr1q1LnTp1mDZtGgCRkZGUKFGCV199lbfeeitR16hZsyZt27bl/fffx7IsvLy8eOONNxg2bBgA/v7+eHp6MmvWLLp165aoawYEBODh4YG/vz958uRJ3ovLaF59FaZNg9dfh0mTHN0aERERERGRLCWxOdRhPfGhoaHs3LmTFi1axDTGyYkWLVqwdevW+z7esix8fX05cuQIjRo1AsDPz4+LFy/aXdPDw4O6deve85ohISEEBATYbVmOitqJiIiIiIikew4L8VevXiUiIgJPT0+7456enly8eDHBx/n7+5MrVy5cXFxo27YtU6dOpWXLlgDRj0vqNcePH4+Hh0f0VqJEieS+rIwp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\n"
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 1200x600 with 1 Axes>"
            ],
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/IAAAIjCAYAAACgdyAGAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABx/ElEQVR4nO3dd3hUVeL/8c+k9xBISIFIIHSkaIAsKqASDeCiFBVZVoqoK4KKEQsq3a/Y1mVFF1wL2BDEFdaCFLNgYREURFCRBaQKoSchCUkgub8/7m8mmfTKZGber+c5z9w5t8y5TGbXzz3nnmsxDMMQAAAAAABwCh6ObgAAAAAAAKg6gjwAAAAAAE6EIA8AAAAAgBMhyAMAAAAA4EQI8gAAAAAAOBGCPAAAAAAAToQgDwAAAACAEyHIAwAAAADgRAjyAAAAAAA4EYI8AMCtjBkzRnFxcTXad8aMGbJYLHXboAZm//79slgsWrRo0UX/bIvFohkzZtjeL1q0SBaLRfv3769037i4OI0ZM6ZO21ObvxUAAOoTQR4A0CBYLJYqlfXr1zu6qW7v/vvvl8Vi0Z49e8rd5oknnpDFYtH27dsvYsuq78iRI5oxY4a2bdvm6KbYWC+mvPDCC45uCgCggfJydAMAAJCkd955x+7922+/rbVr15aq79ChQ60+57XXXlNhYWGN9n3yySf12GOP1erzXcHIkSM1b948LV68WNOmTStzm/fff1+dO3dWly5davw5t99+u2677Tb5+vrW+BiVOXLkiGbOnKm4uDh169bNbl1t/lYAAKhPBHkAQIPw5z//2e79t99+q7Vr15aqLyknJ0cBAQFV/hxvb+8atU+SvLy85OXF/3UmJiaqdevWev/998sM8hs3btS+ffv0zDPP1OpzPD095enpWatj1EZt/lYAAKhPDK0HADiNq6++Wpdeeqm2bNmiPn36KCAgQI8//rgk6d///rduuOEGxcTEyNfXV/Hx8Zo9e7YKCgrsjlHyvufiw5j/+c9/Kj4+Xr6+vurRo4e+++47u33LukfeYrFo4sSJWrFihS699FL5+vqqU6dOWrVqVan2r1+/Xt27d5efn5/i4+P16quvVvm++6+//lq33HKLLrnkEvn6+io2NlYPPvigzp07V+r8goKC9Pvvv2vw4MEKCgpSRESEJk+eXOrfIj09XWPGjFFoaKgaNWqk0aNHKz09vdK2SGav/K+//qqtW7eWWrd48WJZLBaNGDFC+fn5mjZtmhISEhQaGqrAwED17t1b69atq/QzyrpH3jAMPfXUU2revLkCAgJ0zTXX6Oeffy617+nTpzV58mR17txZQUFBCgkJ0YABA/Tjjz/atlm/fr169OghSRo7dqzt9g3r/ABl3SOfnZ2thx56SLGxsfL19VW7du30wgsvyDAMu+2q83dRU8ePH9e4ceMUGRkpPz8/de3aVW+99Vap7ZYsWaKEhAQFBwcrJCREnTt31t///nfb+vPnz2vmzJlq06aN/Pz81KRJE1111VVau3ZtnbUVAFC36FYAADiVU6dOacCAAbrtttv05z//WZGRkZLM0BcUFKSUlBQFBQXpP//5j6ZNm6bMzEw9//zzlR538eLFOnv2rP7yl7/IYrHoueee09ChQ/Xbb79V2jP7zTff6KOPPtK9996r4OBgvfTSSxo2bJgOHjyoJk2aSJJ++OEH9e/fX9HR0Zo5c6YKCgo0a9YsRUREVOm8ly1bppycHI0fP15NmjTR5s2bNW/ePB0+fFjLli2z27agoEDJyclKTEzUCy+8oC+++EJ//etfFR8fr/Hjx0syA/FNN92kb775Rvfcc486dOig5cuXa/To0VVqz8iRIzVz5kwtXrxYl19+ud1nf/DBB+rdu7cuueQSnTx5Uq+//rpGjBihu+66S2fPntUbb7yh5ORkbd68udRw9spMmzZNTz31lAYOHKiBAwdq69atuv7665Wfn2+33W+//aYVK1bolltuUcuWLXXs2DG9+uqr6tu3r3755RfFxMSoQ4cOmjVrlqZNm6a7775bvXv3liRdccUVZX62YRi68cYbtW7dOo0bN07dunXT6tWr9fDDD+v333/X3/72N7vtq/J3UVPnzp3T1VdfrT179mjixIlq2bKlli1bpjFjxig9PV0PPPCAJGnt2rUaMWKE+vXrp2effVaStHPnTm3YsMG2zYwZMzRnzhzdeeed6tmzpzIzM/X9999r69atuu6662rVTgBAPTEAAGiAJkyYYJT8v6m+ffsakowFCxaU2j4nJ6dU3V/+8hcjICDAyM3NtdWNHj3aaNGihe39vn37DElGkyZNjNOnT9vq//3vfxuSjE8++cRWN3369FJtkmT4+PgYe/bssdX9+OOPhiRj3rx5trpBgwYZAQEBxu+//26r2717t+Hl5VXqmGUp6/zmzJljWCwW48CBA3bnJ8mYNWuW3baXXXaZkZCQYHu/YsUKQ5Lx3HPP2eouXLhg9O7d25BkLFy4sNI29ejRw2jevLlRUFBgq1u1apUhyXj11Vdtx8zLy7Pb78yZM0ZkZKRxxx132NVLMqZPn257v3DhQkOSsW/fPsMwDOP48eOGj4+PccMNNxiFhYW27R5//HFDkjF69GhbXW5url27DMP8rn19fe3+bb777rtyz7fk34r13+ypp56y2+7mm282LBaL3d9AVf8uymL9m3z++efL3Wbu3LmGJOPdd9+11eXn5xu9evUygoKCjMzMTMMwDOOBBx4wQkJCjAsXLpR7rK5duxo33HBDhW0CADQsDK0HADgVX19fjR07tlS9v7+/bfns2bM6efKkevfurZycHP3666+VHnf48OEKCwuzvbf2zv7222+V7puUlKT4+Hjb+y5duigkJMS2b0FBgb744gsNHjxYMTExtu1at26tAQMGVHp8yf78srOzdfLkSV1xxRUyDEM//PBDqe3vueceu/e9e/e2O5eVK1fKy8vL1kMvmfek33fffVVqj2TOa3D48GF99dVXtrrFixfLx8dHt9xyi+2YPj4+kqTCwkKdPn1aFy5cUPfu3cscll+RL774Qvn5+brvvvvsbkeYNGlSqW19fX3l4WH+Z05BQYFOnTqloKAgtWvXrtqfa7Vy5Up5enrq/vvvt6t/6KGHZBiGPv/8c7v6yv4uamPlypWKiorSiBEjbHXe3t66//77lZWVpS+//FKS1KhRI2VnZ1c4TL5Ro0b6+eeftXv37lq3CwBwcRDkAQBOpVmzZrZgWNzPP/+sIUOGKDQ0VCEhIYqIiLBNlJeRkVHpcS+55BK799ZQf+bMmWrva93fuu/x48d17tw5tW7dutR2ZdWV5eDBgxozZowaN25su++9b9++kkqfn5+fX6kh+8XbI0kHDhxQdHS0goKC7LZr165dldojSbfddps8PT21ePFiSVJubq6WL1+uAQMG2F0Ueeutt9SlSxfb/dcRERH67LPPqvS9FHfgwAFJUps2bezqIyIi7D5PMi8a/O1vf1ObNm3k6+ur8PBwRUREaPv27dX+3OKfHxMTo+DgYLt665MUrO2zquzvojYOHDigNm3a2C5WlNeWe++9V23bttWAAQPUvHlz3XHHHaXu0581a5bS09PVtm1bde7cWQ8//HCDf2wgALg7gjwAwKkU75m2Sk9PV9++ffXjjz9q1qxZ+uSTT7R27VrbPcFVeYRYebOjGyUmMavrfauioKBA1113nT777DM9+uijWrFihdauXWublK3k+V2smd6bNm2q6667Tv/61790/vx5ffLJJzp79qxGjhxp2+bdd9/VmDFjFB8frzfeeEOrVq3S2rVrde2119bro92efvpppaSkqE+fPnr33Xe1evVqrV27Vp06dbpoj5Sr77+LqmjatKm2bdumjz/+2HZ//4ABA+zmQujTp4/27t2rN998U5deeqlef/11XX755Xr99dcvWjsBANXDZHcAAKe3fv16nTp1Sh999JH69Oljq9+3b58DW1WkadOm8vPz0549e0qtK6uupB07duh///uf3nrrLY0aNcpWX5tZxVu0aKHU1FRlZWXZ9crv2rWrWscZOXKkVq1apc8//1yLFy9WSEiIBg0aZFv/4YcfqlWrVvroo4/shsNPnz69Rm2WpN27d6tVq1a2+hMnTpTq5f7www91zTXX6I033rCrT09PV3h4uO19VZ4YUPzzv/jiC509e9auV95664a1fRdDixYttH37dhUWFtr1ypfVFh8fHw0aNEiDBg1SYWGh7r33Xr366quaOnWqbURI48aNNXbsWI0dO1ZZWVnq06ePZsyYoTvvvPOinRMAoOrokQcAOD1rz2fxns78/Hz94x//cFST7Hh6eiopKUkrVqzQkSNHbPV79uwpdV91eftL9udnGIbdI8Sqa+DAgbpw4YLmz59vqysoKNC8efOqdZzBgwcrICBA//jHP/T5559r6NCh8vPzq7DtmzZt0saNG6vd5qSkJHl7e2vevHl2x5s7d26pbT09PUv1fC9btky///67XV1gYKAkVemxewMHDlRBQYFefvllu/q//e1vslgsVZ7voC4MHDhQaWlpWrp0qa3uwoULmjdvnoKCgmy3XZw6dcpuPw8PD3Xp0kWSlJeXV+Y2QUFBat26tW09AKDhoUceAOD0rrjiCoWFhWn06NG6//77ZbFY9M4771zUIcyVmTFjhtasWaMrr7xS48ePtwXCSy+9VNu2batw3/bt2ys+Pl6TJ0/W77//rpCQEP3rX/+q1b3WgwYN0pVXXqnHHntM+/fvV8eOHfXRRx9V+/7xoKAgDR482HaffPFh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AAAA4KRiY2O1YcMGRzfDKdEj78yY7A4AAAAA3A5B3plZg3x6ulRQ4NCmAAAAAAAuDoK8M2vc2Hw1DOnMGce2BQAAAABwURDknZm3t2R9LAH3yQMAAACAWyDIOztmrgcAAAAAt0KQd3bMXA8AAAAAboUg7+yYuR4AAABALV199dWaNGmS7X1cXJzmzp1b4T4Wi0UrVqyo9WfX1XHcCUHe2TG0HgAAAHBbgwYNUv/+/ctc9/XXX8tisWj79u3VPu53332nu+++u7bNszNjxgx169atVP3Ro0c1YMCAOv2skhYtWqRGjRrV62dcTAR5Z0eQBwAAANzWuHHjtHbtWh0+fLjUuoULF6p79+7q0qVLtY8bERGhgICAumhipaKiouTr63tRPstVEOSdHUEeAAAAqBeGIWVnO6YYRtXa+Mc//lERERFatGiRXX1WVpaWLVumcePG6dSpUxoxYoSaNWumgIAAde7cWe+//36Fxy05tH737t3q06eP/Pz81LFjR61du7bUPo8++qjatm2rgIAAtWrVSlOnTtX58+clmT3iM2fO1I8//iiLxSKLxWJrc8mh9Tt27NC1114rf39/NWnSRHfffbeysrJs68eMGaPBgwfrhRdeUHR0tJo0aaIJEybYPqsmDh48qJtuuklBQUEKCQnRrbfeqmPHjtnW//jjj7rmmmsUHByskJAQJSQk6Pvvv5ckHThwQIMGDVJYWJgCAwPVqVMnrVy5ssZtqQqvej066h+T3QEAAAD1IidHCgpyzGdnZUmBgZVv5+XlpVGjRmnRokV64oknZLFYJEnLli1TQUGBRowYoaysLCUkJOjRRx9VSEiIPvvsM91+++2Kj49Xz549K/2MwsJCDR06VJGRkdq0aZMyMjLs7qe3Cg4O1qJFixQTE6MdO3borrvuUnBwsB555BENHz5cP/30k1atWqUvvvhCkhQaGlrqGNnZ2UpOTlavXr303Xff6fjx47rzzjs1ceJEu4sV69atU3R0tNatW6c9e/Zo+PDh6tatm+66667K/9HKOD9riP/yyy914cIFTZgwQcOHD9f69eslSSNHjtRll12m+fPny9PTU9u2bZO3t7ckacKECcrPz9dXX32lwMBA/fLLLwqq5z8cgryzY7I7AAAAwK3dcccdev755/Xll1/q6quvlmQOqx82bJhCQ0MVGhqqyZMn27a/7777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tq6D8+vfv7+GDh2qli1bau/evXr88cc1YMAAbdy4UZ6eno5uHqqpsLBQkyZN0pVXXqlLL71Ukvlb9vHxUaNGjey25bfsfMr6fiXpT3/6k1q0aKGYmBht375djz76qHbt2qWPPvrIga1FdezYsUO9evVSbm6ugoKCtHz5cnXs2FHbtm3j9+siyvuOJX7D1UWQB2pgwIABtuUuXbooMTFRLVq00AcffKBx48Y5sGUAauK2226zLXfu3FldunRRfHy81q9fr379+jmwZaiJCRMm6KeffmLuEhdV3vd7991325Y7d+6s6Oho9evXT3v37lV8fPzFbiZqoF27dtq2bZsyMjL04YcfavTo0fryyy8d3SzUofK+444dO/IbriaG1teD8PBweXp6lppJ89ixY4qKinJQq1CfGjVqpLZt22rPnj2ObgrqmPU3y+/ZvbRq1Urh4eH8pp3QxIkT9emnn2rdunVq3ry5rT4qKkr5+flKT0+3257fsnMp7/stS2JioiTxO3YiPj4+at26tRISEjRnzhx17dpVf//73/n9upDyvuOy8BuuGEG+Hvj4+CghIUGpqam2usLCQqWmptrdAwLXkZWVpb179yo6OtrRTUEda9mypaKioux+z5mZmdq0aRO/Zxd2+PBhnTp1it+0EzEMQxMnTtTy5cv1n//8Ry1btrRbn5CQIG9vb7vf8q5du3Tw4EF+y06gsu+3LNu2bZMkfsdOrLCwUHl5efx+XZj1Oy4Lv+GKMbS+nqSkpGj06NHq3r27evbsqblz5yo7O1tjx451dNNQByZPnqxBgwapRYsWOnLkiKZPny5PT0+NGDHC0U1DDWRlZdld7d23b5+2bdumxo0b65JLLtGkSZP01FNPqU2bNmrZsqWmTp2qmJgYDR482HGNRrVU9B03btxYM2fO1LBhwxQVFaW9e/fqkUceUevWrZWcnOzAVqM6JkyYoMWLF+vf//63goODbffNhoaGyt/fX6GhoRo3bpxSUlLUuHFjhYSE6L777lOvXr30hz/8wcGtR2Uq+3737t2rxYsXa+DAgWrSpIm2b9+uBx98UH369FGXLl0c3HpUxZQpUzRgwABdcsklOnv2rBYvXqz169dr9erV/H5dREXfMb/hGnD0tPmubN68ecYll1xi+Pj4GD179jS+/fZbRzcJdWT48OFGdHS04ePjYzRr1swYPny4sWfPHkc3CzW0bt06Q1KpMnr0aMMwzEfQTZ061YiMjDR8fX2Nfv36Gbt27XJso1EtFX3HOTk5xvXXX29EREQY3t7eRosWLYy77rrLSEtLc3SzUQ1lfb+SjIULF9q2OXfunHHvvfcaYWFhRkBAgDFkyBDj6NGjjms0qqyy7/fgwYNGnz59jMaNGxu+vr5G69atjYcfftjIyMhwbMNRZXfccYfRokULw8fHx4iIiDD69etnrFmzxrae36/zq+g75jdcfRbDMIyLeeEAAAAAAADUHPfIAwAAAADgRAjyAAAAAAA4EYI8AAAAAABOhCAPAAAAAIATIcgDAAAAAOBECPIAAAAAADgRgjwAAAAAAE6EIA8AAAAAgBMhyAMAAIewWCxasWKFo5sBAIDTIcgDAOCGxowZI4vFUqr079/f0U0DAACV8HJ0AwAAgGP0799fCxcutKvz9fV1UGsAAEBV0SMPAICb8vX1VVRUlF0JCwuTZA57nz9/vgYMGCB/f3+1atVKH374od3+O3bs0LXXXit/f381adJEd999t7Kysuy2efPNN9WpUyf5+voqOjpaEydOtFt/8uRJDRkyRAEBAWrTpo0+/vhj27ozZ85o5MiRioiIkL+/v9q0aVPqwgMAAO6IIA8AAMo0depUDRs2TD/++KNGjhyp2267TTt37pQkZWdnKzk5WWFhYfruu++0bNkyffHFF3ZBff78+ZowYYLuvvtu7dixQx9//LFat25t9xkzZ87Urbfequ3bt2vgwIEaOXKkTp8+bfv8X375RZ9//rl27typ+fPnKzw8/OL9AwAA0EBZDMMwHN0IAABwcY0ZM0bvvvuu/Pz87Ooff/xxPf7447JYLLrnnns0f/5827o//OEPuvzyy/WPf/xDr732mh599FEdOnRIgYGBkqSVK1dq0KBBOnLkiCIjI9WsWTONHTtWTz31VJltsFgsevLJJzV79mxJ5sWBoKAgff755+rfv79uvPFGhYeH680336ynfwUAAJwT98gDAOCmrrnmGrugLkmNGze2Lffq1ctuXa9evbRt2zZJ0s6dO9W1a1dbiJekK6+8UoWFhdq1a5csFouOHDmifv36VdiGLl262JYDAwMVEhKi48ePS5LGjx+vYcOGaevWrbr++us1ePBgXXHFFTU6VwAAXAlBHgAANxUYGFhqqHtd8ff3r9J23t7edu8tFosKCwslSQMGDNCBAwe0cuVKrV27Vv369dOECRP0wgsv1Hl7AQBwJtwjDwAAyvTtt9+Wet+hQwdJUocOHfTjjz8qOzvbtn7Dhg3y8PBQu3btFBwcrLi4OKWmptaqDRERERo9erTeffddzZ07V//85z9rdTwAAFwBPfIAALipvLw8paWl2dV5eXnZJpRbtmyZunfvrquuukrvvfeeNm/erDfeeEOSNHLkSE2fPl2jR4/WjBkzdOLECd133326/fbbFRkZKUmaMWOG7rnnHjVt2lQDBgzQ2bNntWHDBt13331Vat+0adOUkJCgTp06KS8vT59++qntQgIAAO6MIA8AgJtatWqVoqOj7eratWunX3/9VZI5o/ySJUt07733Kjo6Wu+//746duwoSQoICNDq1av1wAMPqEePHgoICNCwYcP04osv2o41evRo5ebm6m9/+5smT56s8PBw3XzzzVVun4+Pj6ZMmaL9+/fL399fvXv31pIlS+rgzAEAcG7MWg8AAEqxWCxavny5Bg8e7OimAACAErhHHgAAAAAAJ0KQBwAAAADAiXCPPAAAKIU77wAAaLjokQcAAAAAwIkQ5AEAAAAAcCIEeQAAAAAAnAhBHgAAAAAAJ0KQBwAAAADAiRDkAQAAAABwIgR5AAAAAACcCEEeAAAAAAAn8v8AAEms4EwhyEMAAAAASUVORK5CYII=\n"
          },
          "metadata": {}
        }
      ],
      "source": [
        "# == Plot training curve ==\n",
        "\n",
        "# Accuracy\n",
        "\n",
        "train_accuracy = train_accuracy\n",
        "val_accuracy = val_accuracy\n",
        "epochs_range = range(1, len(train_accuracy) + 1)\n",
        "plt.figure(figsize=(12, 6))\n",
        "plt.plot(epochs_range, train_accuracy, \"r\", label=\"Training Accuracy\")\n",
        "plt.plot(epochs_range, val_accuracy, \"b\", label=\"Validation Accuracy\")\n",
        "plt.title(\"Training and Validation Accuracy\")\n",
        "plt.xlabel(\"Epochs\")\n",
        "plt.ylabel(\"Accuracy\")\n",
        "plt.legend()\n",
        "plt.savefig(\n",
        "    \"Training_accuracy_\"+str(NUM_CLASSES)+\"classes.png\",\n",
        "    dpi=300,\n",
        "    format=\"png\",\n",
        "    bbox_inches=\"tight\",\n",
        ")\n",
        "plt.show()\n",
        "plt.close()\n",
        "\n",
        "# Loss\n",
        "\n",
        "train_loss = train_loss\n",
        "val_loss = val_loss\n",
        "epochs_range = range(1, len(train_loss) + 1)\n",
        "plt.figure(figsize=(12, 6))\n",
        "plt.plot(epochs_range, train_loss, \"r\", label=\"Training Loss\")\n",
        "plt.plot(epochs_range, val_loss, \"b\", label=\"Validation Loss\")\n",
        "plt.title(\"Training and Validation Loss\")\n",
        "plt.xlabel(\"Epochs\")\n",
        "plt.ylabel(\"Loss\")\n",
        "plt.legend()\n",
        "plt.savefig(\n",
        "    \"Training_loss_\"+str(NUM_CLASSES)+\"classes.png\",\n",
        "    dpi=300,\n",
        "    format=\"png\",\n",
        "    bbox_inches=\"tight\",\n",
        ")\n",
        "plt.show()\n",
        "plt.close()"
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "from sklearn.metrics import precision_score, recall_score, f1_score\n",
        "\n",
        "# Predict probabilities\n",
        "pred_prob = model.predict(X_test)\n",
        "\n",
        "# Binarize predictions using a threshold\n",
        "threshold = 0.5\n",
        "pred = (pred_prob > threshold).astype(int)\n",
        "\n",
        "# Calculate accuracy and other metrics\n",
        "accuracy = accuracy_score(Y_test, pred)\n",
        "precision = precision_score(Y_test, pred, average='micro')  # or 'macro'\n",
        "recall = recall_score(Y_test, pred, average='micro')\n",
        "f1 = f1_score(Y_test, pred, average='micro')\n",
        "\n",
        "print(f\"Accuracy test set: {accuracy}\")\n",
        "print(f\"Precision test set: {precision}\")\n",
        "print(f\"Recall test set: {recall}\")\n",
        "print(f\"F1 Score test set: {f1}\")"
      ],
      "metadata": {
        "id": "cepu01n_JRn4",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "14ecf28e-5744-47e6-ac6f-105a1a79a4db"
      },
      "execution_count": 50,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "608/608 [==============================] - 4s 6ms/step\n",
            "Accuracy test set: 0.22865367809592352\n",
            "Precision test set: 0.7023589743589743\n",
            "Recall test set: 0.27552169947964167\n",
            "F1 Score test set: 0.395784768913634\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# == Convert predictions unbalanced in Physionet\n",
        "import shutil\n",
        "\n",
        "try:\n",
        "    shutil.rmtree(\"test_outputs\")\n",
        "except FileNotFoundError:\n",
        "    print(f\"Error: Directory not found.\")\n",
        "except PermissionError:\n",
        "    print(f\"Error: Permission denied.\")\n",
        "try:\n",
        "    os.makedirs(\"test_outputs\")\n",
        "except OSError as e:\n",
        "    print(f\"Error: {e.strerror}\")\n",
        "\n",
        "pbar = tqdm(total=len(pred), desc=\"Convert test_outputs\", position=0, leave=True)\n",
        "for index, prediction in enumerate(tqdm(zip(pred, pred_prob))):\n",
        "    pbar.update(1)\n",
        "    new_file = \"#\"\n",
        "    new_file += Z_test[index] + \"\\n\"\n",
        "    # ids\n",
        "    for pred_index, _ in enumerate(prediction[0]):\n",
        "        new_file += map_arrhyhtmia_index_to_id(pred_index) + \",\"\n",
        "    new_file = new_file[:-1] + \"\\n\"\n",
        "    # pred\n",
        "    for pred_index, _ in enumerate(prediction[0]):\n",
        "        if prediction[0][pred_index] == 1:\n",
        "            value = \"True\"\n",
        "        elif prediction[0][pred_index] == 0:\n",
        "            value = \"False\"\n",
        "        new_file += value + \",\"\n",
        "    new_file = new_file[:-1] + \"\\n\"\n",
        "    # pred_prob\n",
        "    for pred_index, _ in enumerate(prediction[1]):\n",
        "        new_file += str(prediction[1][pred_index]) + \",\"\n",
        "    new_file = new_file[:-1]\n",
        "    # with open(os.path.join(path, f\"test_outputs/{Z_test[index]}.csv\"), \"w\", encoding=\"utf-8\") as file:\n",
        "    #    file.write(new_file)\n",
        "    with open(f\"test_outputs/{Z_test[index]}.csv\", \"w\", encoding=\"utf-8\") as file:\n",
        "        file.write(new_file)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "MJohDGH0ZwDn",
        "outputId": "9add7ddf-7977-4418-a963-1938ec3ec285"
      },
      "execution_count": 51,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Convert test_outputs:   0%|          | 0/19453 [00:00<?, ?it/s]\n",
            "Convert test_outputs: 100%|██████████| 19453/19453 [51:52<00:00,  6.25it/s]  \n",
            "Convert test_outputs:   4%|▍         | 823/19453 [00:00<00:02, 8221.72it/s]\n",
            "Convert test_outputs:   9%|▊         | 1679/19453 [00:00<00:02, 8419.68it/s]\n",
            "Convert test_outputs:  13%|█▎        | 2535/19453 [00:00<00:01, 8482.55it/s]\n",
            "Convert test_outputs:  17%|█▋        | 3384/19453 [00:00<00:01, 8035.07it/s]\n",
            "Convert test_outputs:  22%|██▏       | 4232/19453 [00:00<00:01, 8188.89it/s]\n",
            "Convert test_outputs:  26%|██▌       | 5068/19453 [00:00<00:01, 8239.25it/s]\n",
            "Convert test_outputs:  30%|███       | 5899/19453 [00:00<00:01, 8260.17it/s]\n",
            "Convert test_outputs:  35%|███▍      | 6727/19453 [00:00<00:01, 8247.29it/s]\n",
            "Convert test_outputs:  39%|███▉      | 7589/19453 [00:00<00:01, 8358.36it/s]\n",
            "Convert test_outputs:  43%|████▎     | 8443/19453 [00:01<00:01, 8411.37it/s]\n",
            "Convert test_outputs:  48%|████▊     | 9292/19453 [00:01<00:01, 8434.58it/s]\n",
            "Convert test_outputs:  52%|█████▏    | 10136/19453 [00:01<00:01, 8379.57it/s]\n",
            "Convert test_outputs:  56%|█████▋    | 10975/19453 [00:01<00:01, 8330.73it/s]\n",
            "Convert test_outputs:  61%|██████    | 11809/19453 [00:01<00:00, 7859.77it/s]\n",
            "Convert test_outputs:  65%|██████▍   | 12618/19453 [00:01<00:00, 7924.47it/s]\n",
            "Convert test_outputs:  69%|██████▉   | 13473/19453 [00:01<00:00, 8104.03it/s]\n",
            "Convert test_outputs:  74%|███████▎  | 14308/19453 [00:01<00:00, 8175.52it/s]\n",
            "Convert test_outputs:  78%|███████▊  | 15155/19453 [00:01<00:00, 8261.22it/s]\n",
            "Convert test_outputs:  82%|████████▏ | 16007/19453 [00:01<00:00, 8337.35it/s]\n",
            "Convert test_outputs:  87%|████████▋ | 16857/19453 [00:02<00:00, 8383.72it/s]\n",
            "Convert test_outputs:  91%|█████████ | 17697/19453 [00:02<00:00, 8373.83it/s]\n",
            "Convert test_outputs:  95%|█████████▌| 18536/19453 [00:02<00:00, 8355.93it/s]\n",
            "Convert test_outputs: 100%|█████████▉| 19373/19453 [00:02<00:00, 8304.11it/s]\n",
            "19453it [00:02, 8264.55it/s]\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "from google.colab import files\n",
        "folder_to_zip = \"test_outputs\"\n",
        "output_filename = 'test_outputs.zip'\n",
        "shutil.make_archive(output_filename.replace('.zip', ''), 'zip', folder_to_zip)\n",
        "files.download(output_filename)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 16
        },
        "id": "sTng6qe6bIZT",
        "outputId": "8aadb5c6-32cb-4aa7-837c-16169ee36833"
      },
      "execution_count": 52,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<IPython.core.display.Javascript object>"
            ],
            "application/javascript": [
              "\n",
              "    async function download(id, filename, size) {\n",
              "      if (!google.colab.kernel.accessAllowed) {\n",
              "        return;\n",
              "      }\n",
              "      const div = document.createElement('div');\n",
              "      const label = document.createElement('label');\n",
              "      label.textContent = `Downloading \"${filename}\": `;\n",
              "      div.appendChild(label);\n",
              "      const progress = document.createElement('progress');\n",
              "      progress.max = size;\n",
              "      div.appendChild(progress);\n",
              "      document.body.appendChild(div);\n",
              "\n",
              "      const buffers = [];\n",
              "      let downloaded = 0;\n",
              "\n",
              "      const channel = await google.colab.kernel.comms.open(id);\n",
              "      // Send a message to notify the kernel that we're ready.\n",
              "      channel.send({})\n",
              "\n",
              "      for await (const message of channel.messages) {\n",
              "        // Send a message to notify the kernel that we're ready.\n",
              "        channel.send({})\n",
              "        if (message.buffers) {\n",
              "          for (const buffer of message.buffers) {\n",
              "            buffers.push(buffer);\n",
              "            downloaded += buffer.byteLength;\n",
              "            progress.value = downloaded;\n",
              "          }\n",
              "        }\n",
              "      }\n",
              "      const blob = new Blob(buffers, {type: 'application/binary'});\n",
              "      const a = document.createElement('a');\n",
              "      a.href = window.URL.createObjectURL(blob);\n",
              "      a.download = filename;\n",
              "      div.appendChild(a);\n",
              "      a.click();\n",
              "      div.remove();\n",
              "    }\n",
              "  "
            ]
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<IPython.core.display.Javascript object>"
            ],
            "application/javascript": [
              "download(\"download_6c1a7efd-e608-45dc-9f2e-4e98048df3cf\", \"test_outputs.zip\", 8162656)"
            ]
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# == Apply on testset balanced ==\n",
        "\n",
        "# Predict probabilities\n",
        "pred_prob = model.predict(X_test_balanced)\n",
        "\n",
        "# Binarize predictions using a threshold\n",
        "threshold = 0.5\n",
        "pred = (pred_prob > threshold).astype(int)\n",
        "\n",
        "# Calculate accuracy and other metrics\n",
        "accuracy = accuracy_score(Y_test_balanced, pred)\n",
        "precision = precision_score(Y_test_balanced, pred, average='micro')  # or 'macro'\n",
        "recall = recall_score(Y_test_balanced, pred, average='micro')\n",
        "f1 = f1_score(Y_test_balanced, pred, average='micro')\n",
        "\n",
        "print(f\"Accuracy test set: {accuracy}\")\n",
        "print(f\"Precision test set: {precision}\")\n",
        "print(f\"Recall test set: {recall}\")\n",
        "print(f\"F1 Score test set: {f1}\")"
      ],
      "metadata": {
        "id": "bKa8poZGu3WW"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "# == Plot trainset distribution ==\n",
        "\n",
        "extracted_labels_testset = []\n",
        "for label in Y_train:\n",
        "    for index, _ in enumerate(label):\n",
        "        if label[index]:\n",
        "            extracted_labels_testset.append(index)\n",
        "\n",
        "label_counts = Counter(extracted_labels_testset)\n",
        "print(label_counts)\n",
        "combined = list(zip(label_counts.keys(), label_counts.values()))\n",
        "combined.sort(key=lambda x: x[1], reverse=True)\n",
        "label_keys, label_values = zip(*combined)\n",
        "label_keys = list(label_keys)\n",
        "label_values = list(label_values)\n",
        "\n",
        "label_keys = list(map(lambda x: str(x), label_keys))\n",
        "\n",
        "# for index, key in enumerate(label_keys):\n",
        "#    label_keys[index] = str(index + 1) + \". \" + key[0].upper() + key[1:]\n",
        "\n",
        "plt.figure(figsize=(30, 10))\n",
        "plt.bar(label_keys, label_values, color=\"#1f77b4\")\n",
        "plt.title(\"Physionet 2021 labels\")\n",
        "plt.xlabel(\"Arrhythmia type\", labelpad=7)\n",
        "plt.ylabel(\"Occurence\")\n",
        "plt.xticks(rotation=45, ha=\"right\", fontsize=16)  # (rotation='diagional')\n",
        "bars = plt.bar(label_keys, label_values, color=\"#1f77b4\")\n",
        "# Adding the counts on top of the bars\n",
        "for bar in bars:\n",
        "    yval = bar.get_height()\n",
        "    plt.text(\n",
        "        bar.get_x() + bar.get_width() / 2,\n",
        "        yval + 5,\n",
        "        yval,\n",
        "        ha=\"center\",\n",
        "        va=\"bottom\",\n",
        "        fontsize=16,\n",
        "    )\n",
        "\n",
        "plt.show()\n",
        "plt.close()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 407
        },
        "id": "QhhGpFuwM5ZZ",
        "outputId": "2550dc59-37eb-41da-ebd7-df31209c414b"
      },
      "execution_count": 42,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Counter({0: 19812, 22: 14985, 24: 7824, 23: 7566, 2: 6699, 11: 4145, 1: 3624, 8: 3583, 21: 3002, 25: 2986, 9: 2558, 3: 2431, 4: 1479, 18: 1457, 19: 1376, 12: 1163, 13: 1154, 10: 1153, 15: 1142, 14: 959, 7: 870, 20: 825, 16: 494, 5: 404, 6: 232, 17: 134})\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 3000x1000 with 1 Axes>"
            ],
            "image/png": "iVBORw0KGgoAAAANSUhEUgAACXIAAANvCAYAAAB6MLAgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdediXY/4//ueduivtSSVCQ2MrJFv2JYVmTMMw1kJkKYzwIWNnFMaSfYwlQ0ZjZmSUQYQsWYpkbSwlSzFINyEt9+8Pv95f91S0utDjcRzvQ9d5vs7zel0XM384ns6rrLKysjIAAAAAAAAAAAAUplrRDQAAAAAAAAAAACzvBLkAAAAAAAAAAAAKJsgFAAAAAAAAAABQMEEuAAAAAAAAAACAgglyAQAAAAAAAAAAFEyQCwAAAAAAAAAAoGCCXAAAAAAAAAAAAAUT5AIAAAAAAAAAACiYIBcAAAAAAAAAAEDBBLkAAAAAmMfAgQNTVlaW0aNHf2/3nDhxYsrKyjJw4MDv7Z587eGHH05ZWVkefvjhRV578MEHp27duku1nx122CE77LDDUt0TAAAA4IdOkAsAAABgOTI3oDX3V6tWrfz85z9P79698/777xfd3g/Kbbfdlssuu2yhaj///PNcddVV6dSpU1ZZZZXUq1cv7dq1yzXXXJPZs2fPUz9nzpxceOGFadWqVWrVqpUNN9wwf/3rX+epGThwYPbYY4+0bNkyderUSZs2bXLeeeflyy+/nGfPa665JnvvvXdWX331lJWV5eCDD16cxwYAAACgINWLbgAAAACA798555yTVq1a5csvv8xjjz2Wa665Jvfcc09efPHFrLjiioX0tMYaa+SLL75IjRo1Crn//7rtttvy4osv5ne/+9131r755ps55phjsvPOO6dPnz6pX79+7rvvvhx99NF58sknc/PNN1ep//3vf5/+/fvn8MMPz2abbZa77ror+++/f8rKyrLvvvsm+Tocdsghh2TLLbfMkUcemaZNm2bUqFE588wz8+CDD2bEiBEpKysr7XnBBRfk008/zeabb57Jkycv1XcBAAAAwLInyAUAAACwHNptt92y6aabJkkOO+ywrLTSSrnkkkty1113Zb/99iukp7knhP0YNW/ePC+88EI22GCD0tgRRxyRQw89NDfddFNOP/30rL322kmSd999NxdffHF69eqVK6+8MsnXfw+23377nHTSSdl7772zwgorpLy8PI8//ni22mqr0p6HH3541lxzzVKYq2PHjqW5Rx55pHQa19L+1CEAAAAAy55PKwIAAACQnXbaKUkyYcKEKuMzZsxInz59svLKK6dOnTr59a9/nf/+97+l+e7du6dJkyaZOXPmPHt26tQp66yzTul6+PDh2WabbdKwYcPUrVs366yzTk499dTS/MSJE1NWVpaBAwdW2WfEiBHZdtttU6dOnTRs2DC/+tWv8sorr1SpOeuss1JWVpbXX389Bx98cBo2bJgGDRrkkEMOyeeffz5Pb7feemvat2+f2rVrp3Hjxtl3333z9ttvl+Z32GGHDBs2LG+99VbpM5RrrrnmAt9fkyZNqoS45vr1r3+dJFX6veuuuzJz5swcffTRpbGysrIcddRReeeddzJq1KgkSXl5eZUQ17ftmXx9otk3T+haUo8++mjpU401a9ZMy5Ytc/zxx+eLL76Yb/2bb76Zzp07p06dOmnRokXOOeecVFZWVqmZM2dOLrvssmywwQapVatWmjVrliOOOCJTp079zn6uuOKKbLDBBllxxRXTqFGjbLrpprntttuWyrMCAAAA/BAIcgEAAACQN954I0my0korVRk/5phj8vzzz+fMM8/MUUcdlbvvvju9e/cuzR900EH56KOPct9991VZN2XKlIwYMSIHHnhgkuSll17KL37xi8yYMSPnnHNOLr744uyxxx55/PHHv7WvBx54IJ07d84HH3yQs846K3369MkTTzyRrbfeOhMnTpynfp999smnn36afv36ZZ999snAgQNz9tlnV6n5wx/+kG7duqV169a55JJL8rvf/S4PPvhgtttuu3zyySdJvv704cYbb5wmTZrklltuyS233JLLLrtsYV7lPO8h+TroNddzzz2XOnXqZL311qtSu/nmm5fmF3XPZeGOO+7I559/nqOOOipXXHFFOnfunCuuuCLdunWbp3b27NnZdddd06xZs1x44YVp3759zjzzzJx55plV6o444oicdNJJ2XrrrTNgwIAccsghGTRoUDp37jzfMOBcf/7zn3Psscdm/fXXz2WXXZazzz47G2+8cZ566qml/twAAAAARfFpRQAAAIDl0LRp0/Lhhx/myy+/zOOPP55zzjkntWvXzi9+8YsqdSuttFLuv//+0klPc+bMyeWXX55p06alQYMG2WmnnbLaaqvl1ltvrbL2r3/9a+bMmVMKcg0fPjxfffVV/v3vfy9SAOmkk05K48aNM2rUqDRu3DhJ0rVr17Rr1y5nnnlmbr755ir17dq1yw033FC6/uijj3LDDTfkggsuSJK89dZbOfPMM3PeeedVOQ1szz33TLt27XL11Vfn1FNPzS677JJVV101U6dOLT3Dovrqq69y2WWXpVWrVtlss81K45MnT06zZs3mOT1rlVVWSZK8995737rvhRdemPr162e33XZbrL4W1gUXXJDatWuXrnv27Jm11147p556aiZNmpTVV1+9NPfll19m1113zeWXX54kOfroo/PLX/4yF1xwQY499tg0adIkjz32WK6//voMGjQo+++/f2ntjjvumF133TV33HFHlfFvGjZsWDbYYIPccccdy+hpAQAAAIrnRC4AAACA5VDHjh2z8sorp2XLltl3331Tt27d3HnnnVl11VWr1PXs2bNK4GjbbbfN7Nmz89ZbbyVJqlWrlgMOOCD/+te/8umnn5bqBg0alK222iqtWrVKkjRs2DDJ158VnDNnzkL1OHny5IwdOzYHH3xwKcSVJBtuuGF22WWX3HPPPfOsOfLII6tcb7vttvnoo49SUVGRJPnnP/+ZOXPmZJ999smHH35Y+jVv3jytW7fOQw89tFC9LYzevXvn5ZdfzpVXXpnq1f/ff0/5xRdfpGbNmvPU16pVqzS/IOeff34eeOCB9O/fv/ROl5VvhrimT5+eDz/8MFtttVUqKyvne2rYN09qKysrS+/evfPVV1/lgQceSPL1CV8NGjTILrvsUuXdt2/fPnXr1v3Wd9+wYcO88847eeaZZ5biEwIAAAD8sAhyAQAAACyHrrrqqgwfPjwPPfRQXn755bz55pvp3LnzPHXfPHUpSRo1apQkmTp1ammsW7du+eKLL3LnnXcmScaPH58xY8bkoIMOKtX89re/zdZbb53DDjsszZo1y7777pu//e1v3xrqmhsWW2eddeaZW2+99fLhhx9m+vTpi9Tva6+9lsrKyrRu3Torr7xyld8rr7ySDz74YIH9LIqLLroof/7zn3Puuedm9913rzJXu3btzJgxY541X375ZWl+fgYPHpzTTjstPXr0yFFHHbVU+vw2kyZNKoXo6tatm5VXXjnbb799kq9PdPumatWq5Wc/+1mVsZ///OdJUvoE5muvvZZp06aladOm87z7zz777Fvf/cknn5y6detm8803T+vWrdOrV6/v/CwnAAAAwI+NTysCAAAALIc233zzbLrppt9Zt8IKK8x3vLKysvTn9ddfP+3bt8+tt96abt265dZbb015eXn22WefUk3t2rUzcuTIPPTQQxk2bFjuvffeDB48ODvttFPuv//+Bd5nUX1Xv3PmzElZWVn+/e9/z7e2bt26S9zDwIEDc/LJJ+fII4/MaaedNs/8KquskoceeiiVlZVVTjubPHlykqRFixbzrBk+fHi6deuWLl265Nprr13iHr/L7Nmzs8suu+Tjjz/OySefnHXXXTd16tTJu+++m4MPPnihT1X7pjlz5qRp06YZNGjQfOdXXnnlBa5db731Mn78+AwdOjT33ntv/vGPf+Tqq6/OGWeckbPPPnuRewEAAAD4IRLkAgAAAGCJdevWLX369MnkyZNz2223pUuXLqXTsOaqVq1adt555+y888655JJLcv755+f3v/99HnrooXTs2HGePddYY40kX5/w9b9effXVNGnSJHXq1FmkPtdaa61UVlamVatWpROjFuSbIauFddddd+Wwww7Lnnvumauuumq+NRtvvHGuv/76vPLKK1l//fVL40899VRp/pueeuqp/PrXv86mm26av/3tb1U+07isvPDCC/nPf/6Tm2++Od26dSuNDx8+fL71c+bMyZtvvlnlnf7nP/9Jkqy55ppJvn73DzzwQLbeeusFnjr2berUqZPf/va3+e1vf5uvvvoqe+65Z/7whz+kb9++pc9SAgAAAPyY+bQiAAAAAEtsv/32S1lZWY477ri8+eabOfDAA6vMf/zxx/OsmRtYmt9nBpOvT67aeOONc/PNN+eTTz4pjb/44ou5//775/lk4cLYc889s8IKK+Tss8+ucqpY8vWpXR999FHpuk6dOvN8QvDbjBw5Mvvuu2+22267DBo0KNWqzf9fvf3qV79KjRo1cvXVV1e597XXXptVV101W221VWn8lVdeSZcuXbLmmmtm6NChixWAWhxzTyv75juqrKzMgAEDFrjmyiuvrFJ75ZVXpkaNGtl5552TJPvss09mz56dc889d561s2bNqvL3+H998+9LkpSXl2f99ddPZWVlZs6cuVDPBAAAAPBD50QuAAAAAJbYyiuvnF133TV33HFHGjZsmC5dulSZP+ecczJy5Mh06dIla6yxRj744INcffXVWW211bLNNtsscN+LLroou+22Wzp06JAePXrkiy++yBVXXJEGDRrkrLPOWuQ+11prrZx33nnp27dvJk6cmK5du6ZevXqZMGFC7rzzzvTs2TMnnnhikqR9+/YZPHhw+vTpk8022yx169bNL3/5y/nu+9Zbb2WPPfZIWVlZfvOb3+SOO+6oMr/hhhtmww03TJKsttpq+d3vfpeLLrooM2fOzGabbZYhQ4bk0UcfzaBBg0ohqk8//TSdO3fO1KlTc9JJJ2XYsGHzPEuHDh1K13fffXeef/75JMnMmTMzbty4nHfeeUmSPfbYo3T/hbHuuutmrbXWyoknnph333039evXzz/+8Y9MnTp1vvW1atXKvffem+7du2eLLbbIv//97wwbNiynnnpq6ZOJ22+/fY444oj069cvY8eOTadOnVKjRo289tprueOOOzJgwID85je/me/+nTp1SvPmzbP11lunWbNmeeWVV3LllVemS5cuqVev3kI/FwAAAMAPmSAXAAAAAEtFt27dMnTo0Oyzzz6pWbNmlbk99tgjEydOzI033pgPP/wwTZo0yfbbb5+zzz47DRo0WOCeHTt2zL333pszzzwzZ5xxRmrUqJHtt98+F1xwQVq1arVYfZ5yyin5+c9/nksvvTRnn312kqRly5bp1KlT9thjj1Ld0UcfnbFjx+amm27KpZdemjXWWGOBQa4JEyaUTu/q1avXPPNnnnlmlSBV//7906hRo/zpT3/KwIED07p169x6663Zf//9SzUfffRR3n777VLP/6t79+5Vglz/+Mc/cvPNN5eun3vuuTz33HNJvg6PLUqQq0aNGrn77rtz7LHHpl+/fqlVq1Z+/etfp3fv3tloo43mqV9hhRVy77335qijjspJJ52UevXqlf6efdO1116b9u3b509/+lNOPfXUVK9ePWuuuWYOPPDAbL311gvs54gjjsigQYNyySWX5LPPPstqq62WY489NqeddtpCPxMAAADAD11Z5f+eIQ8AAAAAi+Guu+5K165dM3LkyGy77bZFtwMAAAAAPyqCXAAAAAAsFb/4xS/yyiuv5PXXX09ZWVnR7QAAAADAj4pPKwIAAACwRG6//faMGzcuw4YNy4ABA4S4AAAAAGAxOJELAAAAgCVSVlaWunXr5re//W2uvfbaVK/uvx0EAAAAgEXl36oBAAAAsET8d4IAAAAAsOSqFd0AAAAAAAAAAADA8s6JXEvJnDlz8t5776VevXopKysruh0AAAAAAAAAAKBglZWV+fTTT9OiRYtUq/btZ24Jci0l7733Xlq2bFl0GwAAAAAAAAAAwA/M22+/ndVWW+1bawS5lpJ69eol+fql169fv+BuAAAAAAAAAACAolVUVKRly5albNG3EeRaSuZ+TrF+/fqCXAAAAAAAAAAAQMncbNG3+fYPLwIAAAAAAAAAALDMCXIBAAAAAAAAAAAUTJALAAAAAAAAAACgYIJcAAAAAAAAAAAABRPkAgAAAAAAAAAAKJggFwAAAAAAAAAAQMEEuQAAAAAAAAAAAAomyAUAAAAAAAAAAFAwQS4AAAAAAAAAAICCCXIBAAAAAAAAAAAUTJALAAAAAAAAAACgYIJcAAAAAAAAAAAABRPkAgAAAAAAAAAAKJggFwAAAAAAAAAAQMEEuQAAAAAAAAAAAAomyMVyZ/z48bniiity8MEHp23btqlevXrKyspy3nnnfeu6jz/+OH379s16662X2rVrp1GjRtluu+1yyy23fOu66dOnp1+/ftl0001Tv3791KhRI82bN88vfvGL/Otf/1rgmttuuy0nnHBCdthhh9SvXz9lZWVZe+21v/VekyZNyp/+9KfsueeeWWONNVKzZs3UrVs3G220UU499dT897///faXAwAAAAAAAABAIaoX3QB836655poMGDBgkda8+eab2WmnnfLWW29lpZVWys4775wvvvgiTz75ZB599NE8+OCDuemmm1JWVlZl3UcffZTtttsuL7/8curWrZutttoqDRs2zOuvv55hw4Zl2LBhOfbYY+fp57XXXssBBxywyM+2//775/HHH0/16tXTrl27dOjQIR9//HGeeuqp9OvXL9dff33uv//+bLzxxou8NwAAAAAAAAAAy44TuVjutGnTJieeeGIGDRqUV155JQcddNB3rtlvv/3y1ltvZYcddshrr72WoUOH5sEHH8zzzz+ftdZaKzfffHOuv/76edadc845efnll9O+ffu89dZbue+++zJ48OCMGTMmw4YNS/Xq1XP55ZfnySefrLKuXr16OeSQQ3LFFVfksccey9ChQxfq2VZdddVceumlmTJlSp5++uncfvvtuf/++/P6669nhx12yH//+9/ss88+mT179sK9LAAAAAAAAAAAvhdO5GK5c9hhh1W5rlbt2/OMo0aNytNPP50VVlgh119/fRo1alSaW3vttXPJJZfkV7/6Vc4999wcdthhVU7lGjFiRJLk5JNPTuPGjavsu/vuu2fHHXfM8OHDM2rUqGy55ZalubXWWis33nhj6frhhx9eqGcbPHjwfMdXXnnl3HLLLWnZsmVee+21jBo1Kttss81C7QkAAAAAAAAAwLLnRC74Ds8880ySZM0118xaa601z3zHjh2TJG+//XaefvrpKnO1atVaqHs0adJkCbv8bquttlrpPm+//fYyvx8AAAAAAAAAAAtPkAu+w2effZYkWWmlleY7v+KKK6Z27dpJkjFjxlSZ22233ZIkF1xwQT7++OMqc/fcc08eeuihNG/ePHvsscfSbnseH374YaZOnZokWWWVVZb5/QAAAAAAAAAAWHg+rQjfoWnTpkmSCRMmzHd+ypQp+eKLL+Zbc/LJJ+fpp5/OfffdlzXWWCNbb711GjZsmNdffz1jxozJ1ltvnRtuuCENGjRYtg+R5I9//GNmz56dVVZZJVtttdUyvx8AAAAAAAAAAAvPiVzwHXbccceUlZXlv//9b4YMGTLP/LXXXlv6c0VFRZW5OnXq5O67786JJ56Y6dOn57777svgwYMzZsyYrLTSSunYsWNWXXXVZf0IeeCBB/LHP/4xSXLxxRenvLx8md8TAAAAAAAAAICFJ8gF32GttdbKgQcemCQ59NBDc+utt+ajjz7KO++8kwsuuCDnn39+atSokSSpVq3q/6QmT56crbfeOldccUXOO++8vPnmm/nss8/y9NNPp3379jn77LOzzTbb5NNPP11m/b/wwgvZe++9M3v27BxzzDHZb7/9ltm9AAAAAAAAAABYPIUGufr165fNNtss9erVS9OmTdO1a9eMHz++Ss2XX36ZXr16ZaWVVkrdunWz11575f33369SM2nSpHTp0iUrrrhimjZtmpNOOimzZs2qUvPwww9nk002Sc2aNbP22mtn4MCB8/Rz1VVXZc0110ytWrWyxRZb5Omnn17qz8yP0zXXXJOuXbtm6tSpOeigg9KkSZO0bNkyp5xySn7961+nS5cuSZLGjRtXWde9e/c888wzOffcc3PqqaemVatWqVOnTjbbbLMMHTo0bdu2zfPPP186LWtpe/XVV9OxY8d88sknOeSQQzJgwIBlch8AAAAAAAAAAJZMoUGuRx55JL169cqTTz6Z4cOHZ+bMmenUqVOmT59eqjn++ONz991354477sgjjzyS9957L3vuuWdpfvbs2enSpUu++uqrPPHEE7n55pszcODAnHHGGaWaCRMmpEuXLtlxxx0zduzY/O53v8thhx2W++67r1QzePDg9OnTJ2eeeWaeffbZbLTRRuncuXM++OCD7+dl8INWp06d3HnnnXniiSdyxhln5PDDD8/JJ5+cESNGZPDgwaVwYdu2bUtr3n333QwfPjxJ5nsKVo0aNfKb3/wmydefPlza/vOf/2SnnXbKBx98kG7duuX6669PWVnZUr8PAAAAAAAAAABLrnqRN7/33nurXA8cODBNmzbNmDFjst1222XatGm54YYbctttt2WnnXZKktx0001Zb7318uSTT2bLLbfM/fffn5dffjkPPPBAmjVrlo033jjnnntuTj755Jx11lkpLy/Ptddem1atWuXiiy9Okqy33np57LHHcumll6Zz585JkksuuSSHH354DjnkkCTJtddem2HDhuXGG2/MKaecMk/vM2bMyIwZM0rXFRUVy+Qd8cPSoUOHdOjQocrYp59+mrFjx6Z69erZcccdS+OTJk0q/bl+/frz3a9BgwZJko8//nip9vnaa69lxx13zOTJk3PggQfmpptumuezjwAAAAAAAAAA/HD8oJId06ZNS/L/Pk83ZsyYzJw5Mx07dizVrLvuull99dUzatSoJMmoUaPStm3bNGvWrFTTuXPnVFRU5KWXXirVfHOPuTVz9/jqq68yZsyYKjXVqlVLx44dSzX/q1+/fmnQoEHp17JlyyV9fH6krr766nzxxRfZe++9q/xzuOqqq5b+/NRTT8137ZNPPpkkadWq1VLr54033siOO+6Y9957LwceeGBuvvlmIS4AAAAAAAAAgB+4H0y6Y86cOfnd736XrbfeOm3atEmSTJkyJeXl5WnYsGGV2mbNmmXKlCmlmm+GZ+bOz537tpqKiop88cUX+fDDDzN79uz51szd43/17ds306ZNK/3efvvtxXtwfhTeeOON/Pe//60yVllZmRtvvDGnn356GjduXDrxba7VV189m222WZLkuOOOy8SJE6vM33rrrRk8eHCSZP/9918qfU6YMCE77rhj3n333Rx00EFCXAAAAAAAAAAAPxKFflrxm3r16pUXX3wxjz32WNGtLJSaNWumZs2aRbfBYnj22Wdz9NFHl67feOONJMmf/vSnDB06tDR+5513ZpVVVkmS3H333TnppJOyySabZPXVV09lZWVGjx6dt956K02bNs2///3vUu033Xjjjdlxxx3zyiuvZL311suWW26ZJk2a5JVXXimdGHfggQfmgAMOmGftr3/960yePDnJ//t05zvvvJMtt9yyVHPYYYflsMMOK13vtddeefvtt0v/bB566KHzfQeHHXZYttlmm4V4WwAAAAAAAAAAfB9+EEGu3r17Z+jQoRk5cmRWW2210njz5s3z1Vdf5ZNPPqlyKtf777+f5s2bl2qefvrpKvu9//77pbm5f5079s2a+vXrp3bt2llhhRWywgorzLdm7h78dFRUVMz3U4fvvPNO3nnnndL1jBkzSn/eeuuts9dee+Xpp5/Oiy++mLKysvzsZz/L6aefnj59+sxzatxcbdq0yYsvvphLL700//73v/PMM89kxowZadSoUTp37pxDDz00++yzz3zXPvfcc3nrrbeqjM2YMaNK77vuumuV+Y8//rhUd8sttyzwHeywww6CXAAAAAAAAAAAPyCFBrkqKytzzDHH5M4778zDDz+cVq1aVZlv3759atSokQcffDB77bVXkmT8+PGZNGlSOnTokCTp0KFD/vCHP+SDDz5I06ZNkyTDhw9P/fr1s/7665dq7rnnnip7Dx8+vLRHeXl52rdvnwcffDBdu3ZN8vWnHh988MH07t17mT0/xdhhhx1SWVm5SGs222yz3H777Yt1v2bNmqV///7p37//Iq37308xLqs1AAAAAAAAAAAUr9AgV69evXLbbbflrrvuSr169TJlypQkSYMGDVK7du00aNAgPXr0SJ8+fdK4cePUr18/xxxzTDp06FD6vFynTp2y/vrr56CDDsqFF16YKVOm5LTTTkuvXr1Kn5c78sgjc+WVV+b//u//cuihh2bEiBH529/+lmHDhpV66dOnT7p3755NN900m2++eS677LJMnz49hxxyyPf/YgAAAAAAAAAAgOVKWeWiHk20NG9eVjbf8ZtuuikHH3xwkuTLL7/MCSeckL/+9a+ZMWNGOnfunKuvvrrKJw/feuutHHXUUXn44YdTp06ddO/ePf3790/16v8vp/bwww/n+OOPz8svv5zVVlstp59+euke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AAAAFEyQCwAAAAAAAAAAoGCCXAAAAAAAAAAAAAUT5AIAAAAAAAAAACiYIBcAAAAAAAAAAEDBBLkAAAAAAAAAAAAKJsgFAAAAAAAAAABQMEEuAAAAAAAAAACAgglyAQAAAAAAAAAAFEyQCwAAAAAAAAAAoGCCXAAAAAAAAAAAAAUT5AIAAAAAAAAAACiYIBcAAAAAAAAAAEDBBLkAAAAAAAAAAAAKJsgFAAAAAAAAAABQMEEuAAAAAAAAAACAgglyAQAAAAAAAAAAFEyQCwAAAAAAAAAAoGCCXAAAAAAAAAAAAAUT5AIAAAAAAAAAACiYIBcAAAAAAAAAAEDBBLkAAAAAAAAAAAAKJsgFAAAAAAAAAABQMEEuAAAAAAAAAACAgglyAQAAAAAAAAAAFEyQCwAAAAAAAAAAoGCCXMBiGT9+fK644oocfPDBadu2bapXr56ysrKcd955i7TP1VdfnbKyspSVleWwww5bYN3nn3+efv36ZeONN06dOnVSr169bLbZZrniiisye/bsBa6bNWtWrr766myzzTZp1KhRatSokSZNmmTnnXfOzTffnDlz5syzZuLEiaWeFvQ75ZRTFuk5AQAAAAAAAAC+TfWiGwB+nK655poMGDBgifZ4880383//938pKytLZWXlAus+/vjj7LTTTnn++edTr169bL311llhhRXy5JNP5thjj83dd9+doUOHpry8vMq6GTNmpFOnThk5cmTKy8uzzTbbZOWVV87bb7+dhx56KCNGjMiQIUPyz3/+M2VlZfPct06dOvnNb34z357at2+/RM8OAAAAAAAAAPBNglzAYmnTpk1OPPHEtGvXLptssknOP//83HLLLQu9fs6cOTn44INTVlaWbt265eabb15g7ZFHHpnnn38+bdq0yT333JOWLVsmSd5///3sscceGT58eM4+++z84Q9/qLLu6quvzsiRI7PGGmtk5MiRWX311Utzo0ePzk477ZQhQ4Zk8ODB2Xfffee5b5MmTTJw4MCFfiYAAAAAAAAAgMXl04rAYjnssMNy0UUXZf/998+6666batUW7f9OBgwYkEcffTQXXHBB1lxzzQXWvffee/n73/+eJLniiitKIa4kadasWf785z8nSS699NJ8+umnVdaOGDEiSdKrV68qIa4k2XTTTUvhrVGjRi1S7wAAAAAAAAAAS5sgF/C9Gz9+fH7/+99n++23z1FHHfWttaNHj05lZWXKy8uz3XbbzTO/4YYbZuWVV84XX3yRe+65p8pcrVq1FqqfJk2aLHzzAAAAAAAAAADLgCAX8L2aPXt2unfvnrKystxwww0pKyv71vrPPvssSdKwYcMFnvo1N4g1ZsyYKuO77bZbkuSqq67KpEmTqsyNGTMmt99+e2rXrp2DDjpovvtOnz49/fv3z5FHHpljjjkml112WcaPH//dDwkAAAAAAAAAsIiqF90AsHy56KKL8tRTT+XSSy/NWmut9Z31TZs2TZJ88MEH+eyzz1K3bt0q83PmzMlbb72VJJkwYUKVuYMPPjiPPPJI/vKXv6R169bZZptt0rRp07z99tt54okn0rZt21x77bUL/LTjhx9+mL59+1YZ69OnTw444IBcc8018/QCAAAAAAAAALC4nMgFfG9efPHFnHnmmdlqq61y7LHHLtSaLbbYIiuuuGKS5Prrr59n/i9/+Us+//zzJElFRUWVuWrVqmXgwIH54x//mMrKyowYMSK33357Hn/88dSuXTsdO3acb5isZs2aOfzww3Pffffl7bffzueff56XXnop5557blZcccXceuut2WuvvVJZWbmorwAAAAAAAAAAYL4EuYDvxaxZs9K9e/dUq1YtN9544wI/k/i/6tWrlxNOOCFJ0rdv31x++eWZPHlyPvjgg1x//fU55phjUqNGjSSZZ8+Kior84he/yEknnZTevXvnP//5T6ZPn54XXnghXbt2zSWXXJLNN988b7/9dpV1q6yySq677rp06tQpq622WmrXrp31118/p512WkaMGJEVVlgh999/f+66666l8GYAAAAAAAAAAAS5gO/JH/7whzz77LM5++yzs8466yzS2jPPPDNHHnlkvvzyyxx33HFp0aJFmjVrlsMPPzybbLJJDj300CRJ48aNq6w74YQTcs899+Soo47KJZdcktatW2fFFVdMmzZtMmjQoHTu3DlvvfVWTjvttIXuZfPNN88vf/nLJMndd9+9SM8BAAAAAAAAALAg1YtuAFg+3HnnnUm+Dj/dc889VeYmTpyYJBk2bFh22GGHJMnDDz9cml9hhRVyzTXX5Oijj86//vWvTJo0KXXr1s0OO+yQLl265MADD0yStG3btrRm9uzZueWWW5Ik++2333x72n///XPfffflgQceWKRnWW+99TJkyJC88847i7QOAAAAAAAAAGBBBLmA79Vjjz22wLkpU6ZkypQpC5xv27ZtlbBWklRWVubxxx9Pkuyyyy6l8Q8++CAzZsxIktSvX3+++zVo0CBJ8vHHHy9c8/+/jz76KMnXn30EAAAAAAAAAFgafFoR+F6MHTs2lZWV8/2deeaZSZIePXqUxhbW3/72t0yaNCkdOnRI+/btS+MrrbRSatasmSR56qmn5rv2ySefTJK0atVqoe83ffr00icVN99884VeBwAAAAAAAADwbQS5gB+89957L2+//fY840OHDk3Pnj1Ts2bNXHvttVXmysvLs8ceeyRJTj/99IwbN67K/IMPPpjLLrssydefWPym6667br73mzBhQn71q19l8uTJadiwYQ499NAleSwAAAAAAAAAgBKfVgQWy7PPPpujjz66dP3GG28kSf70pz9l6NChpfE777wzq6yyyhLd6+mnn86ee+6ZjTbaKK1atUqNGjUybty4vPrqq6lbt26GDBmSDTfccJ51l156acaMGZM333wzm2yySbbccsusuuqqefPNNzN69OgkyU477ZQTTzyxyrqrr746Rx55ZDbYYIP8/Oc/T3l5eSZMmJCxY8dmxowZWWmllfLPf/4zTZo0WaLnAgAAAAAAAACYS5ALWCwVFRXz/WThO++8k3feead0PWPGjCW+V5s2bdKtW7eMGjUqw4cPz+zZs7P66qvn+OOPzwknnJBVV111vutWXXXVjB07NpdffnnuuuuuvPDCC3nyySfToEGDbL/99tl///3To0ePrLDCClXWHXvssbnvvvsybty4PPzww6moqEjdunWz4YYbZvfdd8/RRx+dpk2bLvFzAQAAAAAAAADMVVZZWVlZ1M1HjhyZiy66KGPGjMnkyZNz5513pmvXrqX5gw8+ODfffHOVNZ07d869995buv74449zzDHH5O677061atWy1157ZcCAAalbt26pZty4cenVq1eeeeaZrLzyyjnmmGPyf//3f1X2veOOO3L66adn4sSJad26dS644ILsvvvuC/0sFRUVadCgQaZNm5b69esv4pvg+7TmKcOKbqFwE/t3KboFAAAAAAAAAICfvEXJFFX7nnqar+nTp2ejjTbKVVddtcCaXXfdNZMnTy79/vrXv1aZP+CAA/LSSy9l+PDhGTp0aEaOHJmePXuW5isqKtKpU6esscYa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OXJkZs6cWaoZPnx41llnnTRq1KhU8837zK2Zex8AAAAAAAAAAIBlabGCXOuvv37GjRuXffbZJx988EE+/fTTdOvWLa+++mratGmz0Pt89tlnGTt2bMaOHZskmTBhQsaOHZtJkyalrKwsv/vd73LeeeflX//6V1544YV069YtLVq0SNeuXZMk6623Xnbdddccfvjhefrpp/P444+nd+/e2XfffdOiRYskyf7775/y8vL06NEjL730UgYPHpwBAwakT58+pT6OO+643Hvvvbn44ovz6quv5qyzzsro0aPTu3fvxXk9AAAAAAAAAAAAi6T64i5s0aJFzj///CW6+ejRo7PjjjuWrueGq7p3756BAwfm//7v/zJ9+vT07Nkzn3zySbbZZpvce++9qVWrVmnNoEGD0rt37+y8886pVq1a9tprr1x++eWl+QYNGuT+++9Pr1690r59+zRp0iRnnHFGevbsWarZaqutctttt+W0007LqaeemtatW2fIkCGLFEoDAAAAAAAAAABYXGWVlZWVi7ropptuSt26dbP33ntXGb/jjjvy+eefp3v37kutwR+LioqKNGjQINOmTUv9+vWLbodvseYpw4puoXAT+3dZ4j28x6XzHgEAAAAAAACAn65FyRQt1qcV+/XrlyZNmswz3rRp0yU+pQsAAAAAAAAAAGB5s1hBrkmTJqVVq1bzjK+xxhqZNGnSEjcFAAAAAAAAAACwPFmsIFfTpk0zbty4ecaff/75rLTSSkvcFAAAAAAAAAAAwPJksYJc++23X4499tg89NBDmT17dmbPnp0RI0bkuOOOy7777ru0ewQAAAAAAAAAAPhJq744i84999xMnDgxO++8c6pX/3qL2bNnp3v37jn//POXaoMAAAAAAAAAAAA/dYsV5CovL8/gwYNz4oknZuLEialdu3batm2bNdZYY2n3BwAAAAAAAAAA8JO3yEGuTz75JL///e8zePDgTJ06NUnSqFGj7LvvvjnvvPPSsGHDpd0jAAAAAAAAAADAT9oiBbk+/vjjdOjQIe+++24OOOCArLfeekmSl19+OQMHDsyDDz6YJ554Io0aNVomzQIAAAAAAAAAAPwULVKQ65xzzkl5eXneeOONNGvWbJ65Tp065Zxzzsmll166VJsEAAAAAAAAAAD4Kau2KMVDhgzJH//4x3lCXEnSvHnzXHjhhbnzzjuXWnMAAAAAAAAAAADLg0UKck2ePDkbbLDBAufbtGmTKVOmLHFTAAAAAAAAAAAAy5NFCnI1adIkEydOXOD8hAkT0rhx4yXtCQAAAAAAAAAAYLmySEGuzp075/e//32++uqreeZmzJiR008/PbvuuutSaw4AAAAAAAAAAGB5UH1Ris8555xsuummad26dXr16pV11103lZWVeeWVV3L11VdnxowZueWWW5ZVrwAAAAAAAAAAAD9JixTkWm211TJq1KgcffTR6du3byorK5MkZWVl2WWXXXLllVemZcuWy6RRAAAAAAAAAACAn6pFCnIlSatWrfLvf/87U6dOzWuvvZYkWXvttdO4ceOl3hwAAAAAAAAAAMDyYJGDXHM1atQom2+++dLsBQAAAAAAAAAAYLlUregGAAAAAAAAAAAAlneCXAAAAAAAAAAAAAUT5AIAAAAAAAAAACiYIBcAAAAAAAAAAEDBBLkAAAAAAAAAAAAKJsgFAAAAAAAAAABQMEEuAAAAAAAAAACAgglyAQAAAAAAAAAAFEyQCwAAAAAAAAAAoGCCXAAAAAAAAAAAAAUT5AIAAAAAAAAAACiYIBcAAAAAAAAAAEDBBLkAAAAAAAAAAAAKJsgFAAAAAAAAAABQMEEuAAAAAAAAAACAgglyAQAAAAAAAAAAFEyQCwAAAAAAAAAAoGCCXAAAAAAAAAAAAAUT5AIAAAAAAAAAACiYIBcAAAAAAAAAAEDBBLkAAAAAAAAAAAAKJsgFAAAAAAAAAABQMEEuAAAAAAAAAACAgglyAQAAAAAAAAAAFEyQCwAAAAAAAAAAoGCCXAAAAAAAAAAAAAUT5AIAAAAAAAAAACiYIBcAAAAAAAAAAEDBBLkAAAAAAAAAAAAKJsgFAAAAAAAAAABQMEEuAAAAAAAAAACAgglyAQAAAAAAAAAAFEyQCwAAAAAAAAAAoGCCXAAAAAAAAAAAAAUT5AIAAAAAAAAAACiYIBcAAAAAAAAAAEDBBLkAAAAAAAAAAAAKJsgF8AM0ceLElJWVLdRv5MiRVdZ+9NFH6du3b9q2bZs6deqkvLw8q622Wvbee+95aud67rnn0q9fv+y8885p1qxZatSokUaNGmXbbbfNVVddlZkzZy50788//3zKy8tTVlaWtddee4neAwAAAAAAAAAsL6oX3QAA86pbt266d+++wPmXX345zzzzTOrVq5f27duXxt94441st912ee+997LSSitlhx12yIorrpiXXnopf//73/P3v/89F198cfr06VNaM2vWrGyyySal+2622WZp1qxZ3nnnnYwaNSqPPfZY/vKXv+S+++5Lw4YNv7Xvr776Kt26dcusWbOW7AUAAAAAAAAAwHJGkAvgB6hJkyYZOHDgAud33333JMm+++6bOnXqlMb79OmT9957L126dMngwYOrzF133XU54ogjcvLJJ2efffbJaqutVppr3759Tj755Oyxxx6pWbNmafyFF15I586d8/TTT6dPnz658cYbv7Xvc845J+PGjUvv3r1z5ZVXLupjAwAAAAAAAMByy6cVAX5k3n333dx3331Jkh49elSZGzFiRJLkzDPPrBLiSpKePXumdevWmTVrVp555pnSePXq1TN69OjsvffeVUJcSdK2bdtceOGFSZLbb7/9Wz+x+Mwzz6R///7Ze++9s9deey3+AwIAAAAAAADAckiQC+BHZuDAgZkzZ0422GCDbLHFFlXmatWqtVB7NGnSZKHv165duyTJF198kQ8//HC+NV9++WW6d++eRo0aOYkLAAAAAADg/2PvvuNrPv//jz9PJpFIzEStELUqttp7b5VqUSO1R1t71ghqtaU1KlpbS63iK0JJqFV7U8QqQRERFURlnd8fveX8ej4nIYlwgsf9dju3T851Xa/rut5vvv186/N0XQAApAJBLgB4xSRcufi/p3FJUuPGjSVJ48aNU1RUlFnfvHnzdOHCBXl7e6ty5crJXu/ChQuSJAcHB2XNmjXRMaNHj9bZs2c1c+ZM5cyZM9lzAwAAAAAAAAAAAACAf9lZewMAgOTbuXOnLl68KAcHB3Xs2NGi/6uvvtKZM2cUGBiofPnyqVKlSnJyctIff/yhc+fOqWnTppo3b57s7JL3j3+j0Wi6WrFZs2YWVy9K0t69ezV9+nS1bNlS7dq1e74HBAAAAAAAAAAAAADgDUWQCwBeIQsXLpQktWjRItHrEd3d3bVjxw717t1bP/30kwIDA019efPmVZ06dZQjR45krzdu3Djt27dPzs7OmjJlikV/VFSUfH195erqKn9//1Q8EQAAAAAAAAAAAAAAkLhaEQBeGZGRkVqzZo0kqUuXLomOOXfunMqUKaOAgADNmTNH165d0/3797Vjxw65u7tr0KBBatKkieLi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bdu2Tw0uAwAAAAAncgEAAAAAAOCVlxAiatu2rTJlyvTUsffu3VNYWJjFFYT79++Xj4+PDAaDfvjhB6sHFlLi+PHjSfb5+flp3Lhx6tq1q+bPn5+ieY8eParz589Lkt59990kx929e1f/93//J+n1uFbxv2xtbZU/f3517dpVdevW1TvvvKOPP/5Y1apVk4eHR5J158+f1++//y5J6tKlS6Jj/huOa926tXLkyGExpk+fPtq8ebN2796t6OhoOTg4POcTpZy/v79mzJiRoppffvlFAwYMSNV60dHR6tChg1avXq2MGTOqcuXKcnd3161bt/THH39o5syZGjNmjFnN3r17NWPGDLm7u6tIkSKqXLmyoqKidOrUKS1cuFBLly7V0qVL1a5du1TtKS287PcoSV5eXqpWrVqifck9Wa579+66f/9+qveQll6Fd3ju3Dl99dVXypIli4oXL64KFSooNjZWZ8+e1cqVK7Vy5UpNnTpVQ4cOTfWenldISIi2bt2qI0eO6MiRIzp79qzi4uI0YcIEjRo1KtGaa9euadOmTaaa06dPKzo6OlX/3bJp0yY1bdpUklS3bl0FBwcnusfNmzdr69atOnHihO7cuaMMGTKoSJEiat26tT799FM5Ozun/OEBAACAdO7V+dMoAAAAAAAApHtHjx5Vnz59TN8vXbokSfr++++1ceNGU/u6deuUK1euNFkzLCxMgYGBkpIXIrp69arKlCmjYsWKqVChQsqUKZNCQkJ07Ngx2dvba8GCBWrUqFGa7C29i4qK0qJFi9SpUyeLE7d27dqlzp07S5KqVav21CDXTz/9pOjoaBUuXPi1vv7P09NTtWvXVmBgoIKCgtSxY8ckxyaEC6tVq2YRGkzg7OysHDly6M6dOypYsGCiYxLaY2JiFB4errfeeus5nyLlSpQoocGDB6tMmTIqW7asJk2apB9//PGpNQUKFNCnn36qsmXLqmzZslq1apUmTpyYrPW6d++u1atXq1WrVpo3b56yZ89u6ouPj9fBgwctaurVq6ezZ8+qaNGiZu3x8fGaPn26hgwZom7duqlRo0bKkiVLsvaR1l72e5T+/f23ePHiVO95/vz52rx5sz755BPNnj071fOklVfhHXp7e+vYsWMqWbKkbGzML0X5+eef1bFjR40YMULNmzdXsWLFkj1vWrJGIC7BvXv31L17dxkMhqeetFm3bl3duHFDGTJkUPny5VWjRg3dvn1b+/bt0+HDh7VgwQJt375d+fLle+49AQAAAOkJQS4AAAAAAACkmcjISB04cMCi/fr167p+/brp+5MnT9JszR9//FExMTF65513VLFixWeOz507t3r27Gm6hvDJkyd666231L17dw0aNCjJ0M3L9LICcdHR0frkk080aNAglSlTRvny5VNsbKzOnz+v06dPS/o3lLBq1aqnzrNo0SJJSZ889TpJOPEtLCwsyTFxcXFaunSppGeHC8uVK6dff/1V4eHhifb/t91ap8/87xV0/xtOSUzLli3Nriddu3Ztstbatm2bli5dqhIlSmjVqlWyt7e3WLtSpUoWdZ6enonOZ2Njo8GDB8vf31+XL1/Wnj171Lx582TtJa29zPeYFq5evaqBAweqUqVKGjBgQLoIcr0K79Dd3V3u7u6J9rVr107z58/X9u3bFRwcbLUglzUCcQk+/fRT3b59W7169ZK/v3+S44oUKaLx48frgw8+MPtn35UrV9SsWTP98ccf8vX11fbt21O8BwAAACA9I8gFAAAAAACANFOrVq2nnrCREn5+fvLz83vmuEGDBmnQoEHJnjdHjhyaO3fuc+zsxXtZgTgnJyeNHj1ahw8f1rlz5/THH3/o8ePHypIli+rVq6c2bdrI19f3qdf5HTlyRCdOnJCtra06der0XPtJ7548eaI9e/ZIkgoXLpzkuE2bNunmzZtycXFRmzZtnjpnmzZt9Ouvv2r79u2Kj4+3CKYEBQVJ+jfUkDlz5ud8gvRv1qxZkqT+/ftbhLieR8JVqY6Ojmk25+vMaDSqS5cuio6O1sKFC5MVmELypIffi9YKxK1bt07Lli3TkCFDVLx48acGubZt25Zou6enp+bOnavq1avrt99+0/Xr15UnT54U7wUAAABIrwhyAQAAAAAAAOnMywrEOTg4aPz48c81f7ly5dJsr9YWFhamX375RR999JFFaOrGjRsaMGCA/vrrL3l6eqp+/fpJzpNwrWLbtm1NJ3glpUOHDpo0aZJOnz6tMWPGaPz48aZQxW+//abp06dLkj777LPnebRXQlxcnCm8UaNGDd26dUsrVqxQSEiIHB0dVaZMGfn4+KT4ZLIffvhB58+fV86cORM9zet1dvHiRY0aNUphYWFydnZWiRIl1KJFC7PrKhMzZ84cbd++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qlQps/EGgyFZ8y5ZskSdOnWyaD9y5IimTJmiXbt26f79+8qVK5eaNWum0aNHK2fOnGnyTAAAAE9DkAsAAAAAAAAAkC60adNGEyZMUHBwsAYMGGDRHxQUJEl69913UzTvtm3bJEmFCxd+/k2+4o4eParz589LMn+P/fv3V//+/ROtuXLligoUKCBbW1vFxsa+jG2ma0m9w+R4E38vHj58OMm+v//+2xQOTDj57b/279+vRo0a6cGDBxo5cqS++OKLF7bPtHLo0CFJUrly5eTm5mbRX69ePUnS77//rlu3biUaXkuus2fP6uHDh2bz/peHh4dKlCihQ4cO6ZdfftGwYcNSvZY1HDhwQPXr19eDBw+UO3duNWjQQLa2tjp+/LiWLl2q5cuXa/ny5WrTpo2ppnPnzknOFxoaqt9++00Gg0E1a9a06F+zZo3atWun2NhYVahQQQUKFNDhw4c1e/ZsrV69Wnv27Hklw3AAAODVYmPtDQAAAAAAAAAAIEmfffaZsmTJok2bNun7778361uxYoXparDPPvvMrO/bb7/VtWvXLOaLiorSF198oV9++UV2dnb6+OOPX9zm04moqCh99913evDggUXfrl275OPjI0mqVq1aikNIb4rneYc//PCDQkJCLOpiYmL0ww8/aObMmZKkHj16vICdpy/r16+X0WhM9LNo0SJJUt26dU1tnp6eZvUHDx5Uw4YNTSGuiRMnWuEpUi4hWJUtW7ZE+7Nnzy5JMhqNOnr0qEX/0aNHNXz4cPXo0UNDhgzR8uXLE/29+N+1krPekSNHkv8Q6USPHj304MED9ejRQ3/++af+7//+T2vXrtXFi/+vvfsOq9p8+wD+zWFvGSpKnaA468JVrcU966i11bpQ3HWvYl04qlbr3ntVq3XW1dbxq1urKNW27okLERERQRS43z98T8oRUEb0gOf7uS6vQpKTc+duQvIkd57nCkaMGIH4+Hh069bNoAhwxYoVqf4rVqwYgJdFbwUKFDD4rrt376Jjx46Ij4/HwoULceLECaxfvx6XLl1Cu3btcP/+fXz11VcQkXeaA62EhISgd+/e8Pb2ho2NDaytrVGoUCF07NgRZ86cMVg2MTERR48exahRo1C9enW4urrCwsICbm5uqFu3LtasWZNqHlasWAFFUV7777fffnsXm0xERJRtsUcuIiIiIiIiIiIiIkrV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+vUREhKCX375BX/88Qfy58+PyZMn4+zZs8l6dcqXLx+++eYbVKpUCTdv3sT27duxa9cuREdHo0mTJli7di327t0Le3v7ZN/l4eGB7t27Q6fT4cCBA9iyZQsiIyPRtWtX/P333+jUqdM72mpteXh4AAAuXLiAx48fJ5v/4sULnD59GgBQqFChFNexZs0axMXFwdPTE5988slrv69FixYAgLVr1yabFx0dje3btwMAPvvss7RvRBagRc9ms2fPxqBBg2BpaYlNmzZluDDQzMwMRYoUAQDcvn07Q+sgIiIyBeyRi4iIiIiIiIiIiIiIiEgj9erVQ7169dK8vKurKyZNmpSh78qZMycWLFiQoc9mZQ0bNoSdnR2ePn2Krl27YtmyZWoh2/PnzzFw4ECEhITAwsICn3/+eYrr0A+r2LlzZyiK8trv69+/P+bOnYu9e/di8eLF6Nq1KwAgISEBvXr1QmRkJCpWrJiu/69ZQWZ7Nps7dy769u2rFnE1btw4U/E8fPgQAODg4JCp9RAREb3P2CMXEREREREREREREREREWUZ+gI1c3NzbNiwAYULF0bjxo3RvHlzFC5cGHPnzoVOp8OsWbNQuHDhZJ8PDg7GX3/9BTMzM/j5+b3x+/LmzYsVK1bAzMwM3bp1Q5UqVdC6dWsULVoUq1evRu7cubF27do3FoRlNZnp2WzBggXo3bu3WsTVpEmTTMVy+vRpXLp0CQBQqVKlTK0rqxg6dCgURYGiKBg/fnyKy0RERGDYsGEoXrw4bGxs4OzsjBo1amD16tXp+q5du3ap31WnTh0twicioiyKhVxERERERERERERERERElKW0a9cOQUFB8PPzg4ODA/bt24dff/0V5ubmaNu2LY4dO4YePXqk+Fl9b1z169dH3rx50/R9rVq1wp9//onPPvsM165dw5YtW5CQkICvv/4aZ86cgZeXl2bb9q7oezaLjY1F165dER0drc57/vw5BgwYkGLPZosXL0avXr3SVcQVExODuXPn4smTJ8nmHTx4EC1btgQAVK9e/b0o5Dp69CimTp362uK+a9euoXz58pg0aRIePHiA2rVro3z58jh16hQ6dOgAPz8/iMgbv+vRo0fo2rVrtiskJCKijOHQikRERERERERERERERESvKBiw09ghZAk3JmVuOL3MKFOmDJYvX57uz82ePRuzZ89O9+cq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2/HFF18gPj4e8+fPR/fu3TP8Xe+btAxRuXLlSmzfvh09e/aEr6+vcQOmbIGFXERERERERERERERERERERETZwIgRI/D999+rwym+qYgrLCwMmzZtQtu2beHo6Ggw786dOxgwYADu3r2LggULom7dugbzd+3ahc8//xzx8fFYsGABunXrpvn2vC9SG6Jyy5YtAICTJ08mK+QKDQ0FAJw6dUqdt27dOrUIjEwTC7mIiIiIiIiIiIiIiIiIiIiIsrht27bhu+++AwB4eXlh7ty5KS7n5uaGH374AQAQExODXr16oX///ihbtiwKFiwIEcGtW7dw+vRpPH/+HHnz5sXWrVthbW2triMsLAyfffYZnj9/jg8++ABHjx7F0aNHU/y+H374AW5ubhpvbfbzuiEqg4KCUv1cZGQkDhw4AAB49uzZ2wmOsg0WchERERERERERERERERERERFlcREREerPQUFBqRYHFShQQC3kypUrF6ZOnYqDBw/in3/+wfnz5xEbG4scOXKgSpUq+PTTT9GtW7dkvXXFxMQgLi4OAHD79m2sXLky1bgCAwNNvpArtSEqt27dmupnVqxYgU6dOqF27drYu3fv2w6RsgkWchERERERERERERERERERERFlcX5+fvDz80vXZ2xtbTFw4EAMHDgwXZ/T99xFL2VmiEqi9GAhFxERERERERERERERERERERGZjNOnT6NXr17q71evXgUALFy4EDt27FCnb9myBXny5MnwEJVE6cVCLiIiIiIiIiIiIiIiIiIiIiIyGVFRUfjzzz+TTb99+zZu376t/q4fXjKjQ1QSpRcLuYiIiIiIiIiIiIiIiIiIiIjeoYIBO40dQpZwY1Jjo3yvr69vuoaOzOgQla+TkaEy6f2nM3YAREREREREREREREREREREREREpo6FXEREREREREREREREREREREREREbGoRWJiIiIiIiIiIiIiIiIiIiIKNvhEJXGG56S3g72yEVERERERERERERERERERERERGRkLOR6xdy5c1GwYEFYW1ujcuXKOHHihLFDIiIiIiIiIiIiIiIiIiIiIiKi9xwLuZJYv349Bg4ciNGjR+P06dMoU6YM6tevj7CwMGOHRkRERERERERERERERERERERE7zFzYweQlUybNg1du3ZFp06dAAALFizAzp07sWzZMgQEBBgsGxcXh7i4OPX3x48fAwCioqLeXcCUIYlxMcYOwei02E+ZR+ZRK8yjNphHbWQ2j8zhS8yjNphHbTCP2mAetcE8aoN51AbzmHm8BtcG86gN5lEbzKM2mEdt8FytDeZRG8yjNphHbTCP2mAetcE8aoN5zDzWqWR9+v9HIvLGZRVJy1Im4Pnz57C1tcXGjRvRvHlzdXrHjh0RGRmJX375xWD5wMBAjBkz5h1HSURERERERERERERERERERERE2c2tW7fwwQcfvHYZ9sj1/8LDw5GQkIDcuXMbTM+dOzcuXLiQbPlhw4Zh4MCB6u+JiYmIiIiAq6srFEV56/FS9hUVFYV8+fLh1q1bcHR0NHY42RbzmHnMoTaYR20wj9pgHrXBPGqDedQG86gN5lEbzKM2mEdtMI/aYB61wTxmHnOoDeZRG8yjNphHbTCP2mAetcE8aoN51AbzqA3mURvMI6WFiODJkyfImzfvG5dlIVcGWVlZwcrKymBajhw5jBMMZUuOjo78Q64B5jHzmENtMI/aYB61wTxqg3nUBvOoDeZRG8yjNphHbTCP2mAetcE8aoN5zDzmUBvMozaYR20wj9pgHrXBPGqDedQG86gN5lEbzKM2mEd6EycnpzQtp3vLcWQbbm5uMDMzw/379w2m379/H+7u7kaKioiIiIiIiIiIiIiIiIiIiIiITAELuf6fpaUlKlSogH379qnTEhMTsW/fPlStWtWIkRERERERERERERERERERERER0fuOQysmMXDgQHTs2BE+Pj6oVKkSZsyYgadPn6JTp07GDo3eI1ZWVhg9enSyoTkpfZjHzGMOtcE8aoN51AbzqA3mURvMozaYR20wj9pgHrXBPGqDedQG86gN5jHzmENtMI/aYB61wTxqg3nUBvOoDeZRG8yjNphHbTCP2mAeSWuKiIixg8hK5syZgylTpiA0NBRly5bFrFmzULlyZWOHRURERERERERERERERERERERE7zEWchERERERERERERERERERERERERmZztgBEBERERERERERERERERERERERmToWchERERERERERERERERERERERERkZC7mIiIiIiIiIiIiIiIiIiIiIiIiMjIVcRERERERERERERERERERERERERsZCLiIiIiIiIiIiIiIiIiLK0hISEowdAhFRliQixg6BiDTEQi6idBARJCYmqj8TEdF/+HeR6P2mvwYiouxLf67mOTtzmD9tMZ9ERERElBajR4/GmjVrjB0GEVGWcuvWLURHR0NRFGOHQkQaYiEXUTooioKYmBgAQHx8PADedE6vpPli7jInLi4OAB+sZwb3QW29ePHC2CEQkYYePHiAU6dO4dChQ7h37x50OjYdyHguXbpk7BDeC/prH/3NPV5HZoyiKAgLC8OzZ8/U9iGlz5o1a7Bv3z4AL/PJ6/LMYw6JiIiyNl57Z05AQADGjRuHkSNHIiwszNjhZEspPZvhNWTG6XuH47Gdcf7+/mjTpo2xw8jWli5dio4dO2LQoEF48uSJscPJ1nbv3o0HDx4YOwwiFZ/GEKXRmjVr0LlzZ5QpUwa1atVC+/btERQUxBNjOiUkJCA0NBTh4eGIiIhQp7PBkD6TJk3C0KFD8fjxY+h0OuYvg8LCwtQihVOnThk7nGxr3759mDx5Mpo0aYKOHTti+vTpCA0NNXZYRJQJ8+bNw6effoqKFSvik08+QenSpbFlyxYAPGenF/OVed27d0f58uXx999/GzuUbGv37t34/vvv0a5dO/Tr1w+rVq3C3bt3WaCZAevXr0eHDh3g7e0NHx8ffP7557hx44axw8pW+vXrh/bt22PevHk4cuQIABZzZUZsbCzi4uL49rWG+DBOG8yjNphHbTCPGbNy5UoWzGjg3LlzAMB7uJkwYMAATJ48GQ4ODggPD8euXbsAsL2dXuHh4bh48SIuXbqEa9euAfjvJR/mMn1+++03fP/997h//z7b1Rk0aNAgLF++HA8fPuSzhAwaNmwYunfvjhMnTsDHx4dDz2bCwIED0aBBA/z7778AeO1IWYMiPDsTvVFAQAAmT54MALC1tYWiKHj69CkcHBzQsWNHtG3bFpUrVzZylFnfunXrsGvXLvzvf/+Dubk5ChUqhM6dO6N9+/YAXjYWePP5zYYNG4bvv/8eefPmhb+/PwYNGgRHR0fmL50WLlyIFStW4M8//1Sn6QvkKO3GjRuHKVOmIDo6Wp2mKAqqV6+OtWvXwsPDw4jRZU+JiYm8AZAJ27dvh6enJ0qUKGHsULKtoUOH4ocffoCTkxMqVaqEqKgo/Pnnn3B2dsbBgwdRsmRJY4eYLWzevBllypSBp6ensUPJ1gYMGICZM2eiYcOGmDVrFvOZAaNGjcIPP/yAZ8+eGUzPly8fZs6ciWrVqiFnzpxGii57GT58OCZOnAgAas4ePHiAYsWKYe/evcibN68xw8sWgoODUaVKFbx48QLm5uZo2LAhhg4dimrVqgFgmzA9fvnlFxw5cgRHjx6FtbU1+vTpg+rVq8PV1dXYoWUrN2/eRHh4OO7evQtvb294eHjAzs7O2GFlOyEhIbh79y6uXLmCQoUKoUSJEnB2dmbbJp2OHz+Oy5cv4+TJk3B3d0fbtm1RoEAB5jGdjh8/jjt37uDChQvInz8/atSogQIFChg7rGxHfx0+bdo09O3bl/tgBgUEBGDnzp0YO3YsWrRoAYDXO+ml3xebNWsGCwsLbNy4ES1atMCmTZuMHVq2Mnv2bPz4448IDg6GlZUVLCws4O/vj8aNG6NGjRrQ6XQ836TRd999hylTpiAmJgbz5s1D586dmbd00h/XX375JQIDA+Ht7W3skLKdMWPGYMyYMWjUqBFGjhzJZ9SZMHDgQMyYMQMAUKdOHWzevBn29vbGDYoIAISIXmvq1KmiKIo0bdpUjh8/LqGhoRIcHCxt27YVc3NzMTc3l2rVqsmOHTuMHWqWNmzYMFEURRRFEWdnZ7GyslJ/X7BggbHDyzYiIyPl448/FkVRxM3NTZycnGTEiBHy+PFjERFJTEw0coTZw5AhQ0RRFLG1tZUmTZpI48aN1f1xyZIlxg4v29DnsWTJkrJw4ULZsGGD9OnTRzw9PUVRFPHz85Po6Ghjh5ktTJs2TWbMmKH+npCQYMRosq8BAwaIoijSt29fuXz5srHDyZbGjRsniqJIkyZNJDg4WJ3+1VdfiaIoMmLECBERefHihZEizB4GDRokiqJI165d5ebNmyLCc3RG9O/fXxRFkS+++EIuXrxo7HCypcDAQFEURapVqyZbt26VEydOyJIlS6RatWrqdfnw4cPl3Llzxg41y9O3Z3x9feXAgQPy8OFDCQoKkho1aoiiKDJ37lxjh5gthIWFSd68eaVIkSJSs2ZNURRFmjdvLocPH1aX4d/LNxs1apTapjY3NxdFUcTFxUVty/BaMm2mT58uH374oZpLNzc38fHxkT179kh4eLixw8s25syZIz4+PmoeXVxcpFq1ahISEiIi3B/TavLkyZI3b14xMzNT7094eHio52jmMW3GjRsnuXLlMshjrly5ZOTIkXLixAl1OZ5rXi/pdfi///5r7HCyrUWLFqn7YbVq1WTbtm3qPO6DaZN0X7xz545cvnxZdDqdKIoia9asMXZ42cbQoUPV9l/NmjWlevXq6r5ZvHhxCQwMlPj4eBHh+eZN9LmsWLGi7N6929jhZEtJj+sLFy6o0/X7IL3Z7t27xcnJSWrUqCH//POPOp05TD/9/li9enXJmzeveHh4qPcn+PeQjI2FXESvERISIqVLlxYPDw85c+ZMsvmzZ8+WsmXLqhe8SRtj9J/hw4erDz1+//13CQ8Pl99++026desmiqKIq6urHD161NhhZhv+/v5ibW0tQ4YMkdy5c4uzs7OMGDFCIiMjRYQ3At5E/0CzSZMmcvLkSXX6/PnzRVEUady4sYgwj2+ycOFCURRFmjVrZtBYiIyMlFmzZom9vb2ULl1aQkNDjRhl9qB/MFyqVCmDQkI2FNJn3rx56k0oR0dH6dOnD4u50mnPnj3i5OQkpUqVUq974uLiREQkKChI3NzcZObMmcYMMVuYO3euwb7YrVs3uXHjhrHDynb0N1JatWrFG3sZtHv3bnFwcJDSpUvL2bNnDeaFhoZK7dq1RVEUsbe3l549e/Ih3WvMnj1bLCwspFGjRsnyNGvWLFEURcaMGWOk6LKPhIQEefHihfj6+krNmjXlp59+kjJlyrCYK530D48qVaokGzZskKCgIOnRo4coiiL58uWThw8fGjvEbEGfRw8PD+nZs6d88cUX6v7o6uoqQ4YMkdOnTxs7zCxv8ODBoiiKODg4SPPmzcXHx0cKFCggiqJIsWLF5N69e8YOMVvQ5zF//vzy/fffy7Rp08TX11cURZHy5curL+/R640YMUJtW0+cOFECAwPV6x1LS0upWLGibN68WV2e55qU8WUKbSQmJsqECRNEURSpUqWKKIoiPj4+8ssvvxgsQ6lLui+eP39end67d28xNzeX/v37iwjz+CbLly9X7+H+/fff6vTt27dLvXr1xNbWVn0hV//SHu9JpmzJkiWi0+mkefPmai4TExOT5Yv7ZOoGDhwoiqJImzZtDI5rvZiYGImIiJDHjx/Ls2fPjBBh9jBmzBjR6XSyd+9eg+kRERFy8uRJmTx5skyYMEGOHDkit27dMlKUWZ/+PNO6dWs5ePCgNGvWTBRFkV69ehk7NCIRYSEX0WudOnVKzM3NpVOnTiLy8gI2MTHR4AHShg0b1B6SKlSoIPv37zdWuFnS+vXrxcrKSurWrWtQ7CEi8u+//0r16tXF2tpafvrpJyNFmH3oGwRTpkwRZ2dn2blzpwQGBoqzs7O4uLikWszFhtd/li9fLnZ2dlKrVi31IVxCQoLEx8fL5cuXxc3NTapVqyYibHC9zvnz56V8+fLi5uYmQUFBImLYaL1586bkzZtXFEWRjRs3GjPULG/16tVqwYeVlZV4eXnJ4sWL1fk8ftPm0KFD4u3tLYqiSMeOHaVQoUJia2vLYq50mj59uuh0OoN9UH/Nc/jwYbG3t5cBAwbIqlWrZNCgQfLrr7/yZsArDh48KEWLFhVFUcTf31+KFi0q1tbW0q1bN7VnLnozfe96bdq0kUuXLiWbf+/ePTl06JAcOHBA/vrrLyNEmD3MnDlTzMzM1J6iEhMT1X8iImfOnBEvLy+1l9LBgwdLWFiYMUPOko4cOSKFCxeWIkWKqC8BJCYmqg851q9fL4qiyI8//ijXr1+X4OBgFi68Qa9evSRv3rwSFRUlO3fulAoVKqjFXAcPHlSX0/fmQ/9ZtmyZKIoiDRs2NHgQJyJSp04dsbGxkdu3b6vTeC2ZsiVLloiiKFK/fn05deqUiIg8f/5cHj58KI0aNVILk1q2bClHjhwxcrRZ13fffae+JKXv6ejBgweybds2KV26tCiKIqNGjRIR7ouvM3HiRFEURVq0aGHQI25MTIwUK1ZM8uTJw/NKGvz+++9ibW0tvr6+ye4/zpgxQypXrqz2RsNefFKnvw5Pay8pPLZf7/Dhw6IoigwcOFA+//xztRA7aTEXX1RJmf4F8Ff3RRGRtWvXiqIootPpDF7SpeSeP38uX375pVhZWanXNEnvef/7778SEBAgLi4uoiiKtG/fXm3n8N74fxITE+XRo0dSp04dcXFxUe+HJ/X48WN5+PAhX6p4jbFjx6rFrUmveURErly5IqtXr5ZSpUpJ/vz5pVixYlK7dm0e46/QP8sqU6aMeHl5SXR0tHqsHjt2TDp37iwODg4GL5i2aNFCdu3aZeTIs56UioV//fVXtYdhdj5CWQELuYheY+fOnWqXivoCGb2kDdXNmzdLxYoVRafTSfv27fmg7v+FhYVJkyZNxMrKSg4dOqROT5q77t27i6Io0rlzZ2OEmC0dPHhQFEWRrVu3ytOnT2X06NHi6uoqLi4uMnz4cPVNzWPHjsnz589FhA0vEZFz585J+fLlxcXFRY4dO6ZO198wOX/+vNjY2EiPHj3kwIEDMm3aNPnxxx85pEYK9D0fpTQsqv74btu2rSiKImvXrn3X4WUbwcHBUrVqVVEURQIDA+Xrr78WS0tLKVKkCIu50iEqKkp69+6tDvv34sULmT59unzwwQdiY2PDYq50+OKLLwyO25iYGBERuX//vjRv3lwURVGLPvRvtbdu3dqgBxVT9vjxY7VHlJEjR8rjx49l9uzZUqhQIRZzpYO+SMHd3V02bdpkMO/s2bMyfvx4cXZ2VvdDRVFk0KBByR7Y0X/n4qVLl4qIqNeFes+ePZMqVaqIubm5ODo6ioODg2zZskVEeO7Ri4+PlylTpoiiKPLzzz8bTBd52bOZfliSunXrGgzhtHjxYnn69KmxQs+S9PvVnDlzRFEU9QHIpk2bpHz58mox19mzZ2Xfvn3y4YcfyuzZs40ZcpaRmJgoz549k8aNG4uVlZXB8GD6/WzYsGHi6ekpf//9t5w/f17u3bsnT548MVbIWVJiYqLExcVJkyZNxNLSUv788091uv64TkxMVHtCsrGxkRYtWqjFXvSf3bt3i6urq1SoUEHt9VF/jD958kTtmb1p06bGDDPL27Rpk7i4uEjlypXVHnETExMlNjZWRERq164tdnZ2EhoaKrGxsRze/DW+//57URRF1q9fLyIv85j02mf37t1qm8bR0dHgvE4v6R9otmjRIlm75enTp3LmzBmZOHGijBw5Un744Qe5evWqkSLNPs6ePSs2NjYyc+ZMOX36tDRs2DDFYq6keA/35T1anU4njRs3NugVLmkbpVWrVmpbMC4uju2XVDx8+FAKFSoknp6eBr1tJd3Pbt++LRMnThRXV1c1p8xncufOnRNbW1v5+uuvDaafPXtWJk+eLB4eHuLu7i65cuWSHj16yG+//WakSLOmJ0+eiJ+fnzg5OUmhQoXUZ1siL4temzdvrg7T7erqqhYjubq6ytq1a/m38RXlypWTQoUKqc+ugoODpVatWqIoijRo0EC6dOkiDRs2FHt7e3VEKRZz/WfQoEHJioUTEhLk/v37Uq9ePVEURebMmSMiPC+TcbGQi+g1bty4Ifny5RMvLy+1IjfpWzJJ/4AvWbJE3NzcxNHRUW2Imfof+L1794qiKPLNN98km6dvDKxcuVLtupLS5ty5c2JjYyMBAQEi8rKxlbSYa/z48bJlyxZxdnaWUqVKseH1/44cOSIlSpSQhQsXqtP0x/P9+/elRYsWoiiK2quP/l/Dhg1lx44dxgo7S1q4cKEUKFDA4MHHq/r162fw8JgMvXjxQqZOnar22hMfHy9nz56VTp06sZgrnZ48eSItW7aUqlWrGoxfz2Ku9NPfuG/WrJk6LSIiQnr27CmKokjVqlVl1qxZsnXrVunRo4e4urqKhYWFfPnll+yZS16eS9q0aSPlypVT39p68uSJzJkzh8Vc6bBt2zapW7euWFhYSNu2bdVCj2PHjkndunVFp9OJs7OzVK1aVe1ZQT8EY0pDoZuyLl26iKIo0qFDB3Wa/tpH/9/GjRtL7dq11ZcrPD095f79+0aJN6u6efOmzJ8/X/1df04ODw9Xh4UoVaqU9OnTR+bOnSutW7dWHxInHTKZ/vPPP/+IoigGw/Vu3rxZ7Znro48+kvz584uiKGqPcvTy/oSFhYUUK1ZMfRCn/29ERISUKlVK7O3tpWnTpmJtbS158+YVPz8/+d///mfMsLOcW7duiY2NjeTPn19iYmIMrrP1+dy+fbvY2dmJoihiYWEhffv2lUePHhkp4qzn2bNn0q1bNzE3N5edO3eq05O2C//880+xsrKSwoULs6AwFffu3ZPPPvtMFEUxOE715+jw8HDJmzevlC1bVqZPny61atWShg0bysaNG3nt/YrExETp2LGjQS71x3bS/fLo0aNqzr29vTmqQhIHDhxQH5p/8803BkVwJ06ckF69eqnDr+n/5cyZU+bNmyehoaFGjDxri4+Pl5IlS0qjRo1EROSPP/6QTz/9VBRFkYoVK8q2bdtEROS3336TZcuWGTPULCc4ODjF3pn1x/bSpUtFURQpU6ZMiiNU0Ev379+XfPnyiU6nkz/++CPV5e7cuSOjR48WBwcH8fDw4OgpKdC/XD9u3Dh12tGjR9UXeszMzNQ2jP7lHvYAaej+/fsyYMAAsbKykiJFisiGDRvk+PHjauFM//79ZcuWLXLlyhXZuXOnOj1nzpxy/PhxY4efpTRr1kxy5Mih3jMbPXq0KIois2bNMlhuxYoV6ovkn376qdy5c8cY4WYpQ4cOFUVR5KuvvkrW46OIyOTJk0VRFPHw8JArV64YIUKi/7CQi+g1oqKi5JNPPlEfDumlVszVq1cvURRFCdMlIwAALaNJREFUypYtm6wHL1N07949qVOnjixfvjzVZX7//Xe18pnS7sMPP5QaNWqo44TrG1tubm7i4OCgvkEzZcoUI0eatRw8eFB900N/7CZ9CFe5cmVZsWKFBAcHy7Zt29RhUxs3bsyhDJKIjo5OdYgR/cOPgICAZA/oWIz0nxcvXsiSJUuSFQqymCtjQkJCZO/evQbT0lLMxZt8hs6ePSs5cuRQbyo3a9ZMChcuLIqiyCeffJKsZ5lp06aJlZWVWFtby+7du40UddZy7NixZDdH01LMxX3R0N69e6VWrVqi0+mkdevWsnnzZrUHhXHjxsm5c+dERCQ2NlZWrVollpaW6k0/+s9vv/0mdnZ2YmNjk2KvRrdu3RJbW1sZNGiQiIh6k5QvpST36pA3z549U4eFqF27tty7d8/gPP3tt9+KoiiSJ08eg2Hu6KU7d+6Ira1tsmN2z549UqRIEfXhR9++fdV5vA562eN1vnz5pHDhwgYPNkNDQ9XeSYsXLy6VK1cWHx8fMTc3F51OJ2XKlEl2nWTKwsPDxd3dXQoXLqwOffPqMX7o0CGxsLCQ+vXrS/78+cXJyUntZZx/G1/e68mRI4d89NFHKc5PSEiQK1euqL0psMgjZY8fP5bu3bvLjBkz1GlJi7j8/f3VHnHz5csnBQoUUIf97N+/P4effYX+ZbJXi5BEDI/bP/74Q2rWrCk6nU46d+7M+7f/Lzw8XCZPniwffPCB5MmTR6ZMmSIxMTFy5swZtZfCqlWrSo8ePaR///7qQ2EXFxe1xwqeq5NLSEiQJk2aiKenpzrtwIED0qRJEzWnY8eOlUKFCqm9lfI8kzYPHjxQrxu//fZbY4eTpfn7+4u5ublMmDBBRFI/Vi9fvixffvmlKIoi7dq1e5chZgt79uxRc/PixQt59OiRmq/vv/9ezp49K0+fPpXZs2dLgwYN1AIk9oJkKCwsTPr37y9WVlbi5eWl3odIej2kl5CQoM6vUqWKOhKNKdOfI8aNG6fuj0+fPpUPP/xQLRoWMWzfLF++XBwcHMTa2prDBYpIUFCQdOjQQf7991+D6frcxsTESPXq1cXKykp9NsNhkMlYWMhF9AZHjx5Vu59M2rNU0j/c+ovfR48eSdGiRSV//vwmW9msP9klzcnr7N+/P1nvHyk1JkytEavf3le3W/97s2bN1DGw9WJjY6Vdu3Zibm4uiqJIvXr11Hmm2v2+Pl+v3sTTS0hIkNWrV4uiKOLr62uQT5GXx7++iCFpT170n1ePV/3v3333nUEvCkn/Zm7fvp1vEMvLYuFXGwwiIn///fdri7l4c/T1EhMT1Ry9rpgraR7j4uKMEmtWdOzYMSlcuLB67VOiRAnx9vZW99WEhASD41nfm+HQoUONFbJR6c8zKZ1nkw5X8LpirqTnKFN9kJRSHvfs2SO1atUSc3Nz8fT0FEVRZNq0aSIiBse4iMiqVavUwg/2PPOfyMhIadOmjZibm0vBggUlMDBQnj9/LmFhYXLp0iWpWLGi5MiRQ/bs2SMiIj/++GOqvemSoSdPnsikSZMMXkZJTEw02If1DzgPHDhgjBCzLP3x/tFHH0mZMmUkKipKzdv+/fslb9686vHcunVrg5cHTK1N+KqIiAi1J8LGjRvL8uXLZdeuXWovAL6+vnLnzh31ZZ8lS5ZIxYoVxdzcXLp06SIxMTEmn0ORl3nUF8T06dNHnf7ixQt1X9y5c6c4OjrK+vXrZciQIaIoitSsWVMddppE1q1bl+IDN72oqCgpUaKEuLq6SlhYmDqdbRlDjx49Snbf7NGjR2px5scffyxHjx5Ve8vUF9ro908R/m3Ub/8vv/wilpaWUqVKFfVFvNRexF2+fLnkyJFDHBwc1J4sTJk+N48ePZIpU6ZI7ty5JXfu3DJixAi1B7OpU6cmu2emH8bbxcUlxXsbpi7pw3adTicnT55U5x08eFDNrY2NjcGLkKZ+TKeF/lyyZMkSsbGxkfr166v7p6nnL6VnCvphzW1tbdXRFVI7H+/bt08sLCxEURS+sPeKiIgIKVKkiJQsWVKio6Pl3LlzoiiKjB8/XkQMe4I8cOCA1K1bV8zMzKRHjx6SmJho8vtmUvpiLv29xxEjRiRbRn9dfujQIcmZM6cUKVLE4JrS1F29elXtzMHf3188PDzUPKb0d6Bly5apFsyZEv214eueBcTFxcmAAQPUNjaRMbGQi+gNEhISZNKkSWJjYyPW1tYyduxYdV7SGwIvXryQuLg4qVixoiiKIgcPHjTJizP9CfDVgq7UGgfHjx8XRVGkSZMmyQoUFixYIAsWLHjLEWdNr15I6POi3+f0Q7Lp3woWeXkTQF90ZGdnJ66urjJixAj1LWNT3h/1UtoP//rrL4PjOumDdxGRSZMmiaIoMmrUqLcX6Hvohx9+EEVRkg0ptGLFCnFxcZFPPvnEZAsMU/Lq8fm6Yi69M2fOJOshif7zumIu/XDJIiKDBg2S5s2bS1RUlLFCzXLu378v58+fl+vXr8vcuXOlUKFCyXpSiI2NFRGRwYMHi6IoMnLkSGOEanRpOc+8rpjr6tWr6nLffPON+Pn5mWSha2o3UPbs2SN16tQRRVGkV69eyeYnzXf9+vXF0tKSwyG/4vr161KvXj2117ISJUpIgQIFxNnZWezs7GTs2LHqueTYsWNiYWHBns3SKOmD96TXNPr9Wf8W9vbt2991aNlC165dxd7eXn3o9uuvv0rRokVFURTp3LmzVKlSRRRFkc8+++y1w8CYCv255O+//xYPDw+Doa30vYJHRESIyH9txsTERJkxY4YoiiKurq5y48YNo8WfVejzuHDhQrGyshJLS0sJDAw0WObRo0dSrlw5KVy4sMTGxkpiYqKULVtWChQowGvvVKR0ryEqKkpKlSolLi4u6kO3pPfQ9Mc+C7uSCw4Olg8++EAqV66c4st933zzjSiKIpUqVUr1pTVTFBISovZq9OWXX6rTUyvm0hchde/eXUS4L75azJU3b14xMzNLsbd/fcGwiKi9dfXr109EmMeUbN68WRRFMRiKVuTlfTN7e3vR6XRSoEABg3u8zGPanDx5Utzc3ERRFPnxxx+NHU6WkFrbWl846OHhYfCiXkp69+4tOp2Owyu+Ijo6Wn2ZsX379rJ69WpxcXGR4OBg9XlC0mKuefPmiaIokjt3bhYgpeD+/fvSp08f+fTTT+Xvv/9Odblz586Jo6OjWFtby9mzZ03yGVdqFixYINbW1mpBsL+/f7JnW/r7t/rhBKdPn26kaLOX69evi7u7uyiKIitWrDB2OGTCdCCi19LpdOjSpQs6dOiAxMRETJo0CSNHjgQAmJmZQUQQHx8Pc3NzWFpaQlEUFC1aFCVKlICiKEaO/t3Zt28fJk+ejCZNmqBjx46YMWMGQkNDodPpkJiYCJ0u5T83ZmZmAABLS0sAUJdbtWoVhg8fjp49e+Lhw4cQkXezIUb2ah6nT59ukEd9vkqVKgUACA8PBwD8/vvv8Pf3x/Xr1xEYGIgxY8YAABYtWoTx48cjKirKpPfHV/OYVJkyZdRjOj4+HjqdDoqi4Pnz5wbLmco+mFn6/CYkJAAAoqOj1XkrVqzAsGHDICKYPXs2zM3NjRJjVvTq8VmqVCkMHDgQbdu2xc2bNzF58mQsWrRInT906FBUq1YNO3bseNehZhtJzz99+/bFoEGD4OrqiiVLlmDx4sW4fv06JkyYgGnTpuGXX37B48ePjR1ylpErVy4UK1YM+fPnx+7duxEfHw9nZ2cAL4/txMREWFtbAwAuXrwIOzs7VK9e3Zghv3PpOc8oigIRgb29PTp27IhBgwYhT548WLVqFaZOnYo7d+5g0qRJmDx5MtasWaOe601BannUq1OnDgYPHoxu3bqhefPmyT6v0+kgIoiLi8OzZ8/w4sULhIWFvcMtyPoKFiyIpUuX4ptvvkHOnDlx48YNhISEoHLlypgzZw4GDBgAW1tbAIC5uTni4+NhYWFh5Kizhxw5cgB4eY2ov6ZJTEyEpaUlEhMTcfPmTZQsWdLk/j6+if6aukKFCnj69CkuXryI3bt3o2/fvrh8+TJmzpyJpUuXIiAgABUrVsSWLVuwZMkSxMbGGjly41IUBYmJiShVqhT279+PsWPHwt/fH4sWLULt2rXRsGFDODs7q21GEYGiKGjXrh0KFy6MiIgI3Lt3z9ibYXT6a+5atWqhbdu2AIAxY8bgs88+w/fff4/AwEBUr14d//77L3r37q3msXz58ggJCcHVq1eNGX6W9WpbRn+c63Q6xMXF4cWLFwD+u/+zYMECVKtWDSEhIaneKzJlXl5eWLVqFY4fPw5FUdS2dWJiIhRFQefOneHs7AwRManrxtcREeTLlw9LliyBnZ0dfv75Z/Tu3RvAy/1On0P931IA8Pf3h7m5OR48eAAAJr8v6tssOXLkQJcuXdC/f394eHigRYsW6NOnD4D/jm0rKyvEx8cDAOrVqwcA6nna1POYkoIFC8LMzAwHDhxQp+3btw+LFi3C06dPUbx4cYSEhGDQoEH45ZdfADCPaeXj46Pun6tXr0ZYWJjJ3r99U9t6/Pjx+Oijj3D37l18/vnnOH/+fLL7F/rztaurK0QEN2/efOfbkZXZ2dlh5MiRsLGxwY8//oiRI0fi8ePHcHJyUp8n6O9RKIqCL7/8Ep6enoiJicGTJ0+MHX6WkytXLowYMQK9e/dWn3UlpT9369valSpVQvHixU3qGdebfPnll+jUqZP6dy84OBghISFqjuLj49X7t5cuXYKDgwMqV65stHizi8TERBQsWBDt2rUDABw/ftzIEZFJe8eFY0TZVmhoqHTp0kWsra1FURTp2LGjREREGLx9vWDBAvWtYVPq2WPs2LHi4OBg8EawTqeTGjVqyO3bt0Uk9d6ggoKCRFEUadq0qTpt+fLlkidPHnF1dZWzZ8++k23ICtKSR32vZZcvXxZFUWT06NGya9cu8fLyMhhy6P79+xIYGCiKokihQoVM6q2PzOyPeknfSKpbt664ubnJiRMn3mrc7wv9266TJ08WRVHUXvWWLVsmefLkkRw5crz2LZv30bZt2zI8zEDSnrmKFi0qS5culdGjR4uiKGJmZiYXLlzQONr3T9KeuaZOnSr58uUTW1tbdcgrNzc3DgORioSEBGnWrJkoiiKDBg1KNl/fPf/HH3+sDvdiCjJ6nknaM9fMmTOlcOHCYm1tLZUqVRJFUSRnzpzyzz//vNNtMaa05FHv4sWLKa5Df3zHxcVJyZIlxcvLS65fv/62Q8+2bt26JadPn1bf9n91P+3WrZtYWVnJ3r17U5xPr5f0+lF/ru7VqxeHYkvFyZMnRVEU6dSpk5QuXTrFt4PXr18vvr6+cu7cOeMEaSSvu3Z8teeEhw8fiqIoag/D+t559MuFh4fLBx98IMWKFZPw8PC3GHXW86Zr8ODgYBk4cKA6fJD+X9GiRWXixIny5MkTddlBgwaJoigmec2Y0bZMdHS0lCtXThwcHCQkJESdvnz5csmXL58oimLQS+77LqN5TNqblP7nY8eOiZmZmTRr1kyr8LKNN+Xx+fPnMnXqVLVniqTDp77a0/1ff/0liqLI559//naDzoJel0f99V9ERITMmTNHtm7dmuJy+vvh3333nUGPXKYkrcd1fHy85M+fX733vWfPHilSpIgoiiKzZs2Sf//9Vz799FOxsrKSIkWKyK5du9526O8F/b56/Phx8fDwkJw5c8rp06cN5pmK17Wt9T1+x8XFyfbt26VChQrq84Lg4OAU19ehQwdxcHAwySHi03IdPnfuXPU8Y2trK3PmzDHoqVB/nomIiJAPPvhASpcunWxoWkou6XGbtM3Tp08fdbSU+Ph4kzu+3+TevXvSrVs3sbW1FUVRpEGDBnL58mWD59Zz584VnU4n1atXN6nnhCKZey6zY8cO9W+q/j4Z0bvGQi6idAgLC5Phw4erYzdXrlxZvv76a/npp5+ke/fu4uLiIrlz55ZLly4ZO9R3ZsiQIaIoipQsWVIWLlwoGzZskD59+oinp6coiiJ+fn6vvVA9deqUwY0TfRGXk5OTSRV7ZCSP+geWJUuWTPHBx507d2TSpEmpPvx8H2V2fxQxbChMmTJFFEWRFi1aqEOVUNpMnz5dFEWRpUuXyk8//SS5c+c2ueNaRNTx1Pv27SuXL1/O0DqCg4Ola9euYmlpKblz5xZFUcTFxcXkHmpmRtLjeubMmeLq6qrm0RQfyKXHzz//LLa2tmJhYSG9evWSixcvyqVLlyQgIEBy5MghOXPm5HkmHeeZpENPz5s3T3LlymWS+2Ja85jScEJ6SY9rffF6x44dDR68U8r0eUw6HNPChQvFyclJPvnkE3nw4IGxQsu2kt4kXbhwoeTIkUOKFCnCoexeIywsTHLmzKneGNW/kCJiuG+a2jGd3mvHa9euiU6nkyZNmqjTkg6pM3bsWFEURbp06aIOq2EKXpfHpOeSp0+fyqFDh6R3797Sq1cvGTt2rJw/f97gYZyISI0aNcTb29ugqMYUZKYt8/TpUylfvrw4OjqqLzrqX+5xcnIyqeJ1LdqESa97/Pz8RFEUWbJkiYiYTsFCWvN4+/ZtGTVqlPoibocOHVL8+6cvutYPG8g8/kefi6TDyaZ2Hd6oUSOxs7NTi4+YR0P6ooOPP/5YKlSoIKtXr1aLuJJe+xw4cEBq1KghLi4ucu3atXexCe8V/XB3jRo1MrlhkNPSttZfT8fGxsrWrVvVIczt7e1l+fLlBoXVCxcuFHt7e6lSpYpJvbAnkvbj+u7duwbnmY8//liCgoKSDXc8ceJEURRFevTowaGQ0+HVjjOsra2lVKlSBi8GkKGwsDAZNWqUWtBZqVIlGTx4sKxevVo6duwoNjY2kjNnTpN7IVyLa/AuXbqIoigyYMAAg+FTid4VFnIRpVNsbKzs3LlTvLy8xNLS0uBNh/Lly5vUg/WFCxeKoijSrFkzg5twkZGRMmvWLLG3t5fSpUtLaGhoqus4ffq0mJmZyWeffSbLli0Td3d3kyv2SG8e4+Pj5dmzZ9K5c2d135s6dar6uZTe2DQFWuyPSS/EFixYIG5ubuLh4SFXrlx5q7G/j/SFXNWrV5e8efOa3HEtIjJv3jz1GHV0dJQ+ffqku9Gg3yfPnTsnPj4+JlnwoYWkx/bIkSNZDJcOERER0rVrV7GzsxNFUSRXrlxqQbuXl5dJ7YtanGeSnpcDAgJMcl/UOo8LFy4UZ2dnKVCgAB96ZFBgYKDkzJlTcuXKZXI39rQWGBgouXPnlly5cpnU38eMOnDggCiKIjNmzFCn6c/ZpvIgOKmMXDvevXtX3NzcRFEU6d69u8G86dOni6urqxQsWNCk/j6mJ4+p7WdJp+vbNd27d5e4uDiT2Tcz25Z5+vSplClTRnLlyiX379+XlStXmuT9Hi3ahEmve+bMmSNWVlZSvXr1114rvW/Sm8eQkBCZMGGC2oapXbu2LFmyRC5fviyPHz+WadOmSe7cucXLy8ukHgxreY9CRGTq1KmiKIrUrVvXpHp9zMh5Zvjw4aLT6SRv3rwpvowrInL06FGT2h+1oN8fT58+LTqdTsqWLSuPHj0yblDvUEba1nFxcXL8+HFp3LixKIoiNjY2UqRIEfnqq6+kVq1a6kukptRrpkjGzjMTJ05UzzPVqlWTxYsXy5UrVyQiIkLGjx8vrq6uki9fPpO6DtfShAkTJE+ePJIzZ06TumeWUc+ePZPff/9dihUrphYZKooi5ubm8tFHH/GYTuc1j/78vXz5clEURfLnzy937tx5W+ESpYqFXEQZFBoaKr///rtMnDhRJk6cKDt27DCptxTOnz8v5cuXFzc3NwkKChIRMahIvnnzpto43bhxY6rrOX36tCiKIu7u7pIrVy6Tu6mXkTzqLyIuXLggpUqVklmzZqnrM9WKcK32x7i4OHnx4oUMGDBAXF1dJW/evCb1prAW9Pun/oGHoigmd1yLiBw6dEi8vb3VHmIKFSoktra26Wo0JH1INH78eJMs+NDa0KFDRVEUcXZ25gP2dAgLC5Pp06eLu7u75MiRQ8qWLSt9+/Y1qZ5mtDrP6CUt4jKlfVGrPOqXDwgIkJw5c4q7u7tJ5VErly9flubNm4uiKFKqVCmeXzIoNjZW1q9fL2XKlBFFUaRMmTImd5M0M+7evav+bKptGZGMXTvqrxWTDu9SvXp1+fTTT6VGjRqiKIrkzp3bpNozGb0GT7rvJf151qxZ4u7uLvnz5zeph3CZbcskJiZKTEyMVKxYURwcHGTMmDHi4eFhcu1CLdqESen3R1PrUSGjeXz8+LFs3rxZ7Y1Zf29C38t1/vz5Ter6Uev9ce7cuZI7d26TG5kio3nctm2b+mA9aU9cCQkJJlMg/DbdvHkzWTHT+y4zzxT0hg0bJtWrV1f/Rrq6ukrjxo1Nqtd1kYwf11FRUbJ161aDXoadnZ3VlywKFSpkUucZLeg70dD3GleiRAnep0insLAwOXbsmMybN0/mzZsnhw8fNqliaxFtr3ni4uLE19dXFEWRb7/99i1FTJQ6FnIRUYboK5oXLFiQbJ6+wdC2bVtRFEXWrl2b6nrOnDmjjt/s4uJiUjf1RDKeR/28yMjIZNNMkRb7Y0JCgmzcuFFcXFzUbpFNreGqpU2bNqlvdplaozUqKkp69+4tiqLIiBEj5MWLFzJ9+nT54IMPxMbGJt2NhoEDB6o3VEwtl1oKCgoSCwsLMTc3502ADHrw4IFcu3ZNYmJiDLo6NwVaXfeIiPz555+iKIpYWVmZ3L6oRR7j4+Nl27Ztki9fPrXLeFN6mKmliIgI+f7772X8+PFy69YtY4eTbT179kyWLl0qXl5e0qdPH/akkEGm3JbJ7LXjrVu3ZNKkSWoxl74HzXr16pnUw3WtrsETEhLk7t270rhxY7Gzs5N8+fKZ1DW4VnmMjY2VihUrirm5udjZ2ZlcEZdWeYyKipK///5bOnbsKHZ2dib3UFiLPF66dEnGjBkjtWvXlkKFCkm1atVk0KBBJlWcqdX++PTpU7l69ap0795dHB0dTa4YLrN5nD59uixevFj93ZSvfd4GUxpCWiRzbeuk+96TJ0/k9OnTcuDAAbl+/brJDWuuxd/HK1euyOTJk6Vhw4ZSunRpqVWrlgQGBprUy49aiYmJUQvX27dvzxxSumn5XEbfK+6MGTPEw8PDpNrWlHWYg4gyTESgKEqyn02BmZkZ8ufPj3LlygEw3H6dTgcAcHNzAwDExsamuh53d3fkzZsX165dw+HDh1G8ePG3HHnWktE86uc5Ojqqn9NPM0Va7I86nQ7Vq1dHixYtUKhQIfj7+8Pd3f0dRP9+qlWrFsaPH4+WLVvC29vb2OG8U4qi4N69e6hSpQoaNGgAc3Nz9O3bFwAwdepULFmyBADQt29feHl5vXZdMTExOHv2LADg4MGDKFGixNsN/j1WunRpLF68GJUrV0axYsWMHU625Obmpv4tNTVaXfcAQKVKlbBo0SJUrVqV1z0ZPF97e3ujcuXKaNmyJQYPHgwPD493EP37x9nZGQMGDAAAWFhYGDma7MvKygodOnRA7dq14ebmBjs7O2OHlC2Zclsms9eOH3zwAYYOHYoGDRrg8OHDiImJQY0aNeDp6WlS522trsHj4+Nx8OBBXLt2DXXq1MEPP/zwxmv294lWeRQRmJmZISEhAba2tvjjjz9QsmTJd7INWYFWebx9+zaaNm2KGzduoFmzZvjhhx/g6en5TrYhK8hsHhMTE1GkSBGMGjUKIoKwsDA4OzvDzMwMZmZm73RbjEmr/fHq1av44osvcPHiRdStWxdz587l38c05DExMRE6nQ79+/dPNo20Y21tbewQ3qnMtK11Op26D9rb26vrMEVanGc8PT0xZMgQDBkyBFFRUbC3t+fxnUE2Njbo2rUrfH19kT9/fjg5ORk7JMpmtHwuo79WbNSoET777DPky5fv7QZPlBIjFZARUTYXHR0tR44cSXGevpcO/bBBM2fOVOe9+rbRixcv5NSpUyZbXa9VHk39LS6t8qhfPi4u7u0EamJMeb8MCQmRvXv3GkxLSEh44xsgKXWp/+DBA7l58+ZbjddUcMgCyiitzjP6t7lMlVZ5TExMlOjoaImJiXl7wRIRvUMZvXbUn1dM+bo7Ka2uwaOjo+XChQsGPWCbEq3yOHXqVPHw8DCpoa6S0iqPf/zxh/z4448mNyyOnhZ55N9IbfL4/Plz2bJli0ybNk1CQ0PfSdxZTWbP1yK8L0Ha4D0K7fA8Q/R+0fK5DJGxsUcuIsoQOzs7fPTRRwCSv0Wk/9nBwQEAYG7+8k9NQkKCWsW8Y8cOlClTBvny5UP58uXfZehZihZ5LFu2LD744IN3GXaWo2Ue9fMp80z57aN8+fKpb2nIy6GsodPpXvsGSNJ9Ny4uDlZWVhARk+pJ4W0zpZ4zSVs8X2tDyzyy1yMiep9k9NpR//fx+fPnJtcTRUq0uga3s7MzuV6Fk9Iqj127dkWnTp3g7OxsnA0xMq3y6Ovra3KjACSlVR5NnVZ5bN68ucH1uanJ7Pma+yNphfcotMPzDNH7hcc0vU9M9wkrEWnm1WIN/e/6k53+v/qGwsqVK9GxY0e0b98e8fHxEJF3GG3WldE8tmvXjnlMgnmkrEZRFINuy/v27YtBgwbB1dUVS5YswaxZs3DhwgV1Xx08eDBat26Nx48fm+zNeqKsjOcZbTCPREQpy8i1Y5s2bRAVFWXkyLOWzFyD038ykscvv/wSUVFRcHBwMNkirldldn9ku/CljOaRfx8NZXZ/NNUirldxf6Ssgm1r7fC4Jnq/8Jim7I7djhCR5vQnxYSEBABAdHS0Om/FihX49ttvISKYPXs2ez96DeZRG8wjZRWvNhqA/94AsbCwQO/evfHTTz9h2rRpAIAnT57AycnJmCETURrwPKMN5pGIyFB6rx2joqLg6OhozJCzJF6Da4P7oza4P2qD+6M2uD9qg/sjZTVsW2cej2ui9wuPacqueJYmIs3p3+LQvzGoH+Jh+fLlGD58OGJjY3Ho0CGUKlXKaDFmB8yjNphHykpebTQkJiZixowZWLBgAY4dO4bjx4/D1dUVBw4cYPfmRNkEzzPaYB6JiJLjtaM2mEdtMI/aYB61wTxqg3nUBvNIWQnb1trgcU30fuExTdkRh1YkIs3pu+m1sLBQ/7tu3ToMGzYMMTExbCikEfOoDeaRspqkjYaBAwdi8ODBsLGxwfHjx+Hs7IwDBw6gRIkSxg6TiNKI5xltMI9ERCnjtaM2mEdtMI/aYB61wTxqg3nUBvNIWQXb1trhcU30fuExTdkNe+Qiordu+fLluHbtGp49e4bDhw+zoZBBzKM2mEfKasLDwxEREQFnZ2ccPnwYxYsXN3ZIRJQJPM9og3kkIkoZrx21wTxqg3nUBvOoDeZRG8yjNphHyirYttYOj2ui9wuPacrqWMhFRJoTEbXrXgA4cuQIHB0d2VBIJ+ZRG8wjZUU63ctOUb/55htMmTIFOXLkwKFDh9hYIMqGeJ7RBvNIRJQ6Xjtqg3nUBvOoDeZRG8yjNphHbTCPlBWwba0tHtdE7xce05SdsJCLiDSnbyjkz58fwMtx2I8ePcouKdOJedQG80hZ1alTpzB9+nSYmZnhyJEjbCwQZVM8z2iDeSQiej1eO2qDedQG86gN5lEbzKM2mEdtMI9kbGxba4/HNdH7hcc0ZReKiIixgyCi91NkZCTmzZuHli1bwtvb29jhZFvMozaYR8pqnj9/jp9++gmVK1dGsWLFjB0OEWUSzzPaYB6JiFLGa0dtMI/aYB61wTxqg3nUBvOoDeaRsgq2rbXD45ro/cJjmrILFnIR0VuVmJiodlVJGcc8aoN5pKzm1e7OiSh743lGG8wjEVHKeO2oDeZRG8yjNphHbTCP2mAetcE8UlbBtrV2eFwTvV94TFN2wEIuIiIiIiIiIiIiIiIiIiIiIiIiI2MpNhERERERERERERERERERERERkZGxkIuIiIiIiIiIiIiIiIiIiIiIiMjIWMhFRERERERERERERERERERERERkZCzkIiIiIiIiIiIiIiIiIiIiIiIiMjIWchERERERERERERERERERERERERkZC7mIiIiIiIiIiIiIiIiIiIiIiIiMjIVcRERERERERERERERERERERERERsZCLiIiIiIiIiIiIiIiIiIiIiIiIiNjIRcREREREREREREREREREREREZGRsZCLiIiIiIiIiIiIiIiIiIiIiIjIyFjIRUREREREREREREREREREREREZGQs5CIiIiIiIiIiovfC/v37oSgKIiMjNV+3r68v+vfvr/l6AwMDUbZsWc3XS0RERERERERE2Q8LuYiIiIiIiIiIyKiOHTsGMzMzNG7c2NihvNVisJQMHjwY+/bty9Q6/Pz80Lx5c20CIiIiIiIiIiIio2EhFxERERERERERGdXSpUvRp08fHDx4EHfv3n3tsiKC+Pj4ZNOfP3/+tsJ7q+zt7eHq6mrsMIiIiIiIiIiIKAtgIRcRERERERERERlNdHQ01q9fj549e6Jx48ZYsWKFwXx9D1m//vorKlSoACsrKxw+fBi+vr7o3bs3+vfvDzc3N9SvX1/9zKlTp+Dj4wNbW1t89NFHuHjxIgDgxo0b0Ol0CAoKMviOGTNmoECBArh27Rpq1qwJAHB2doaiKPDz81OXS0xMxNChQ+Hi4gJ3d3cEBgYarEdRFCxcuBBNmjSBra0tihcvjmPHjuHKlSvw9fWFnZ0dPvroI1y9elX9zKtDK548eRJ169aFm5sbnJyc8Mknn+D06dOp5i8wMBArV67EL7/8AkVRoCgK9u/fj1q1aqF3794Gyz548ACWlpZqD2AFCxbEuHHj0KZNG9jZ2cHDwwNz5841+ExkZCS6dOmCnDlzwtHREbVq1cKZM2dSjYeIiIiIiIiIiDKOhVxERERERERERGQ0P//8M4oVKwZvb2+0a9cOy5Ytg4gkWy4gIACTJk3C+fPn8eGHHwIAVq5cCUtLSxw5cgQLFixQlx0+fDimTp2KoKAgmJubo3PnzgBeFi7VqVMHy5cvN1j38uXL4efnhwIFCmDTpk0AgIsXL+LevXuYOXOmutzKlSthZ2eHP//8E5MnT8bYsWOxZ88eg3WNGzcOHTp0wF9//YVixYrhq6++Qvfu3TFs2DAEBQVBRJIVWCX15MkTdOzYEYcPH8bx48dRpEgRNGrUCE+ePElx+cGDB+OLL75AgwYNcO/ePdy7dw8fffQRunTpgrVr1yIuLk5d9scff4SHhwdq1aqlTpsyZQrKlCmD4OBgBAQEoF+/fgbb1KpVK4SFheHXX3/FqVOnUL58edSuXRsRERGpbgMREREREREREWUMC7mIiIiIiIiIiMholi5dinbt2gEAGjRogMePH+PAgQPJlhs7dizq1q0LT09PuLi4AACKFCmCyZMnw9vbG97e3uqy3333HT755BOUKFECAQEBOHr0KJ49ewYA6NKlC3766Se1wOn06dP4+++/0alTJ5iZmanrzpUrF9zd3eHk5KSu98MPP8To0aNRpEgRdOjQAT4+PmrvVnqdOnXCF198gaJFi+Kbb77BjRs30LZtW9SvXx/FixdHv379sH///lTzUatWLbRr1w7FihVD8eLFsWjRIsTExKSYE+Dl0Iw2NjawsrKCu7s73N3dYWlpic8++wwA8Msvv6jLrlixAn5+flAURZ1WrVo1BAQEoGjRoujTpw8+//xzTJ8+HQBw+PBhnDhxAhs2bICPjw+KFCmCH374ATly5MDGjRtT3QYiIiIiIiIiIsoYFnIREREREREREZFRXLx4ESdOnECbNm0AAObm5vjyyy+xdOnSZMv6+Pgkm1ahQoUU16vvsQsA8uTJAwAICwsDADRv3hxmZmbYsmULgJfFTTVr1kTBggXfGG/S9erXrV9vSsvkzp0bAFC6dGmDac+ePUNUVFSK33H//n107doVRYoUgZOTExwdHREdHY2QkJA3xpeUtbU12rdvj2XLlgF4WbD2zz//GAwVCQBVq1ZN9vv58+cBAGfOnEF0dDRcXV1hb2+v/rt+/brB8JBERERERERERKQNc2MHQEREREREREREpmnp0qWIj49H3rx51WkiAisrK8yZM8egNyw7O7tkn09pGgBYWFioP+t7n0pMTAQAWFpaokOHDli+fDk+++wzrF271mD4xNdJul79uvXrfd13vy6eV3Xs2BEPHz7EzJkzUaBAAVhZWaFq1ap4/vx5mmJMqkuXLihbtixu376N5cuXo1atWihQoECaPx8dHY08efKk2INYjhw50h0PERERERERERG9Hgu5iIiIiIiIiIjonYuPj8eqVaswdepU1KtXz2Be8+bN8dNPP6FHjx5v5bu7dOmCUqVKYd68eYiPj1eHIQReFnoBQEJCwlv57jc5cuQI5s2bh0aNGgEAbt26hfDw8Nd+xtLSMsV4S5cuDR8fHyxevBhr167FnDlzki1z/PjxZL8XL14cAFC+fHmEhobC3Nw8TT2WERERERERERFR5nBoRSIiIiIiIiIieud27NiBR48ewd/fH6VKlTL417JlyxSHV9RK8eLFUaVKFXzzzTdo06YNbGxs1HkFChSAoijYsWMHHjx4gOjo6LcWR0qKFCmC1atX4/z58/jzzz/Rtm1bg/hSUrBgQZw9exYXL15EeHg4Xrx4oc7r0qULJk2aBBFBixYtkn32yJEjmDx5Mi5duoS5c+diw4YN6NevHwCgTp06qFq1Kpo3b47du3fjxo0bOHr0KIYPH46goCBtN5yIiIiIiIiIiFjIRURERERERERE797SpUtRp04dg+ET9Vq2bImgoCCcPXv2rX2/v78/nj9/js6dOxtM9/DwwJgxYxAQEIDcuXOjd+/eby2GlCxduhSPHj1C+fLl0b59e/Tt2xe5cuV67We6du0Kb29v+Pj4IGfOnDhy5Ig6r02bNjA3N0ebNm1gbW2d7LODBg1CUFAQypUrh/Hjx2PatGmoX78+gJfDQO7atQs1atRAp06dULRoUbRu3Ro3b95E7ty5td1wIiIiIiIiIiKCIiJi7CCIiIiIiIiIiIjepXHjxmHDhg1vtVgsK7hx4wY8PT1x8uRJlC9f3mBewYIF0b9/f/Tv3984wRERERERERERkQFzYwdARERERERERET0rkRHR+PGjRuYM2cOxo8fb+xw3poXL17g4cOHGDFiBKpUqZKsiIuIiIiIiIiIiLIeDq1IREREREREREQmo3fv3qhQoQJ8fX2TDav4Pjly5Ajy5MmDkydPYsGCBcYOh4iIiIiIiIiI0oBDKxIRERERERERERERERERERERERkZe+QiIiIiIiIiIiIiIiIiIiIiIiIyMhZyERERERERERERERERERERERERGRkLuYiIiIiIiIiIiIiIiIiIiIiIiIyMhVxERERERERERERERERERERERERGxkIuIiIiIiIiIiIiIiIiIiIiIiIiI2MhFxERERERERERERERERERERERkZGxkIuIiIiIiIiIiIiIiIiIiIiIiMjIWMhFRERERERERERERERERERERERkZP8HDgoMNXdwmp4AAAAASUVORK5CYII=\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# == Plot testset distribution ==\n",
        "\n",
        "extracted_labels_testset = []\n",
        "for label in Y_test:\n",
        "    for index, _ in enumerate(label):\n",
        "        if label[index]:\n",
        "            extracted_labels_testset.append(index)\n",
        "\n",
        "label_counts = Counter(extracted_labels_testset)\n",
        "print(label_counts)\n",
        "combined = list(zip(label_counts.keys(), label_counts.values()))\n",
        "combined.sort(key=lambda x: x[1], reverse=True)\n",
        "label_keys, label_values = zip(*combined)\n",
        "label_keys = list(label_keys)\n",
        "label_values = list(label_values)\n",
        "\n",
        "label_keys = list(map(lambda x: str(x), label_keys))\n",
        "\n",
        "# for index, key in enumerate(label_keys):\n",
        "#    label_keys[index] = str(index + 1) + \". \" + key[0].upper() + key[1:]\n",
        "\n",
        "plt.figure(figsize=(30, 10))\n",
        "plt.bar(label_keys, label_values, color=\"#1f77b4\")\n",
        "plt.title(\"Physionet 2021 labels\")\n",
        "plt.xlabel(\"Arrhythmia type\", labelpad=7)\n",
        "plt.ylabel(\"Occurence\")\n",
        "plt.xticks(rotation=45, ha=\"right\", fontsize=16)  # (rotation='diagional')\n",
        "bars = plt.bar(label_keys, label_values, color=\"#1f77b4\")\n",
        "# Adding the counts on top of the bars\n",
        "for bar in bars:\n",
        "    yval = bar.get_height()\n",
        "    plt.text(\n",
        "        bar.get_x() + bar.get_width() / 2,\n",
        "        yval + 5,\n",
        "        yval,\n",
        "        ha=\"center\",\n",
        "        va=\"bottom\",\n",
        "        fontsize=16,\n",
        "    )\n",
        "\n",
        "plt.show()\n",
        "plt.close()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 408
        },
        "id": "0waxNV-CTg2J",
        "outputId": "b009c98f-e153-4aef-c157-4751a7464b1e"
      },
      "execution_count": 43,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Counter({0: 9159, 22: 3933, 24: 3892, 11: 3486, 23: 2091, 2: 1675, 1: 1631, 8: 1233, 12: 1023, 25: 1003, 9: 976, 3: 832, 14: 809, 21: 788, 10: 704, 19: 700, 7: 619, 4: 457, 20: 455, 18: 450, 13: 445, 15: 338, 17: 258, 16: 144, 5: 118, 6: 63})\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 3000x1000 with 1 Axes>"
            ],
            "image/png": "iVBORw0KGgoAAAANSUhEUgAACWkAAANvCAYAAAClfso/AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdebzXc/7///tpT/ueZEnWrMnWRLYIzVgHWT7JIJNdGNsIoSxjN3YzMTLTNIZBliIzWZJ9zZIlslSkjSg65/eHr/Nz5sRUzstRrtfL5Vym83q9nq/X4/120R9zuXm+SsrKysoCAAAAAAAAAABAIWpU9wAAAAAAAAAAAADLMpEWAAAAAAAAAABAgURaAAAAAAAAAAAABRJpAQAAAAAAAAAAFEikBQAAAAAAAAAAUCCRFgAAAAAAAAAAQIFEWgAAAAAAAAAAAAUSaQEAAAAAAAAAABRIpAUAAAAAAAAAAFAgkRYAAADAz8zQoUNTUlKSp5566kd75qRJk1JSUpKhQ4f+aM/ka//+979TUlKSf//734u9tm/fvmnYsGGVzrP11ltn6623rtJ7AgAAAPzUibQAAAAAlhHfxFff/NSrVy9rrLFGjjzyyEydOrW6x/tJufXWW3PppZcu0rVz587NH//4x+ywww5Zfvnl06hRo3Tu3DlXX311FixYUOn60tLSXHDBBenQoUPq1auX9ddfP3/9618rXTN06NDssssuWXHFFdOgQYOsu+66Oeecc/LFF19UuufVV1+dvfbaKyuttFJKSkrSt2/fJfnYAAAAAFSTWtU9AAAAAABVa9CgQenQoUO++OKLPPLII7n66qtzzz335KWXXspyyy1XLTOtvPLK+fzzz1O7du1qef5/u/XWW/PSSy/l2GOP/Z/XvvXWWznqqKOy3XbbZcCAAWncuHHuv//+HH744Xn88cdz0003Vbj+tNNOy3nnnZdDDz00m2yySf71r39lv/32S0lJSXr37p3k6/DroIMOyuabb57f/va3ad26dcaNG5czzjgjDz74YMaMGZOSkpLye55//vmZM2dONt1003z44YdV+l0AAAAAUDyRFgAAAMAyZqeddsrGG2+cJDnkkEPSokWLXHzxxfnXv/6Vfffdt1pm+mZnr6VR27Zt8+KLL2adddYpP3bYYYflN7/5Tf785z/n9NNPz2qrrZYkef/993PRRRfliCOOyJVXXpnk638GW221VU488cTstddeqVmzZurUqZNHH300v/jFL8rveeihh2aVVVYpD7V69OhRfu4///lP+S5aVf36QQAAAACK53WHAAAAAMu4bbfdNkny9ttvVzg+b968DBgwIK1atUqDBg2y++6756OPPio/f+CBB6Zly5b58ssvK91zhx12yJprrln+++jRo7PFFlukadOmadiwYdZcc82ceuqp5ecnTZqUkpKSDB06tMJ9xowZky233DINGjRI06ZNs+uuu+aVV16pcM2ZZ56ZkpKSvPHGG+nbt2+aNm2aJk2a5KCDDsrcuXMrzXbLLbekS5cuqV+/fpo3b57evXtn8uTJ5ee33nrrjBw5Mu+88075qyFXWWWV7/z+WrZsWSHQ+sbuu++eJBXm/de//pUvv/wyhx9+ePmxkpKS9O/fP++9917GjRuXJKlTp06FQOv77pl8vRPZt3fW+qEefvjh8tcn1q1bNyuuuGKOO+64fP755wu9/q233krPnj3ToEGDtGvXLoMGDUpZWVmFa0pLS3PppZdmnXXWSb169dKmTZscdthhmTFjxv+c54orrsg666yT5ZZbLs2aNcvGG2+cW2+9tUo+KwAAAMBPgUgLAAAAYBn35ptvJklatGhR4fhRRx2V559/PmeccUb69++fu+66K0ceeWT5+f/7v//L9OnTc//991dYN2XKlIwZMyYHHHBAkuTll1/OL3/5y8ybNy+DBg3KRRddlF122SWPPvro9871wAMPpGfPnpk2bVrOPPPMDBgwII899li6deuWSZMmVbp+7733zpw5czJkyJDsvffeGTp0aM4666wK15x77rnp06dPVl999Vx88cU59thj8+CDD6Z79+6ZOXNmkq9fR7jhhhumZcuW+ctf/pK//OUvufTSSxflq6z0PSRfR1zfePbZZ9OgQYOsvfbaFa7ddNNNy88v7j2LMGLEiMydOzf9+/fPFVdckZ49e+aKK65Inz59Kl27YMGC7LjjjmnTpk0uuOCCdOnSJWeccUbOOOOMCtcddthhOfHEE9OtW7dcdtllOeiggzJs2LD07NlzoaHfN66//vocffTR6dSpUy699NKcddZZ2XDDDTN+/Pgq/9wAAAAA1cXrDgEAAACWMbNmzcrHH3+cL774Io8++mgGDRqU+vXr55e//GWF61q0aJFRo0aV79BUWlqayy+/PLNmzUqTJk2y7bbbpn379rnlllsqrP3rX/+a0tLS8khr9OjRmT9/fu69997FiotOPPHENG/ePOPGjUvz5s2TJLvttls6d+6cM844IzfddFOF6zt37pwbb7yx/Pfp06fnxhtvzPnnn58keeedd3LGGWfknHPOqbCL1x577JHOnTvnqquuyqmnnprtt98+K6ywQmbMmFH+GRbX/Pnzc+mll6ZDhw7ZZJNNyo9/+OGHadOmTaVdr5ZffvkkyQcffPC9973gggvSuHHj7LTTTks016I6//zzU79+/fLf+/Xrl9VWWy2nnnpq3n333ay00krl57744ovsuOOOufzyy5Mkhx9+eH71q1/l/PPPz9FHH52WLVvmkUceyQ033JBhw4Zlv/32K1+7zTbbZMcdd8yIESMqHP+2kSNHZp111smIESMK+rQAAAAA1c9OWgAAAADLmB49eqRVq1ZZccUV07t37zRs2DC33357VlhhhQrX9evXr0JMtOWWW2bBggV55513kiQ1atTI/vvvnzvvvDNz5swpv27YsGH5xS9+kQ4dOiRJmjZtmuTrV/2VlpYu0owffvhhnnvuufTt27c80EqS9ddfP9tvv33uueeeSmt++9vfVvh9yy23zPTp0zN79uwkyT//+c+UlpZm7733zscff1z+07Zt26y++up56KGHFmm2RXHkkUdmwoQJufLKK1Or1v//30F+/vnnqVu3bqXr69WrV37+uwwePDgPPPBAzjvvvPLvtCjfDrQ+++yzfPzxx/nFL36RsrKyhe729e0d1kpKSnLkkUdm/vz5eeCBB5J8vTNXkyZNsv3221f47rt06ZKGDRt+73fftGnTvPfee3nyySer8BMCAAAA/LSItAAAAACWMX/84x8zevToPPTQQ5kwYULeeuut9OzZs9J1394tKUmaNWuWJJkxY0b5sT59+uTzzz/P7bffniR57bXX8vTTT+f//u//yq/ZZ5990q1btxxyyCFp06ZNevfunb///e/fG2x9E4Ktueaalc6tvfba+fjjj/PZZ58t1rwTJ05MWVlZVl999bRq1arCzyuvvJJp06Z95zyL48ILL8z111+fs88+OzvvvHOFc/Xr18+8efMqrfniiy/Kzy/M8OHD8/vf/z4HH3xw+vfvXyVzfp933323PJBr2LBhWrVqla222irJ1zuxfVuNGjWy6qqrVji2xhprJEn5ayknTpyYWbNmpXXr1pW++08//fR7v/uTTjopDRs2zKabbprVV189RxxxxP98VSYAAADA0sbrDgEAAACWMZtuumk23njj/3ldzZo1F3q8rKys/M+dOnVKly5dcsstt6RPnz655ZZbUqdOney9997l19SvXz9jx47NQw89lJEjR+a+++7L8OHDs+2222bUqFHf+ZzF9b/mLS0tTUlJSe69996FXtuwYcMfPMPQoUNz0kkn5be//W1+//vfVzq//PLL56GHHkpZWVmFXco+/PDDJEm7du0qrRk9enT69OmTXr165ZprrvnBM/4vCxYsyPbbb59PPvkkJ510UtZaa600aNAg77//fvr27bvIu6F9W2lpaVq3bp1hw4Yt9HyrVq2+c+3aa6+d1157LXfffXfuu+++3HbbbbnqqqsycODAnHXWWYs9CwAAAMBPkUgLAAAAgO/Vp0+fDBgwIB9++GFuvfXW9OrVq3wXq2/UqFEj2223XbbbbrtcfPHFGTx4cE477bQ89NBD6dGjR6V7rrzyykm+3pnrv7366qtp2bJlGjRosFhzduzYMWVlZenQoUP5Tk/f5dsB1aL617/+lUMOOSR77LFH/vjHPy70mg033DA33HBDXnnllXTq1Kn8+Pjx48vPf9v48eOz++67Z+ONN87f//73Cq9OLMqLL76Y119/PTfddFP69OlTfnz06NELvb60tDRvvfVWhe/09ddfT5KsssoqSb7+7h944IF069btO3cL+z4NGjTIPvvsk3322Sfz58/PHnvskXPPPTennHJK+asiAQAAAJZmXncIAAAAwPfad999U1JSkmOOOSZvvfVWDjjggArnP/nkk0prvomRFvbqv+TrHac23HDD3HTTTZk5c2b58ZdeeimjRo2q9BrBRbHHHnukZs2aOeussyrsBpZ8vdvW9OnTy39v0KBBpdf6fZ+xY8emd+/e6d69e4YNG5YaNRb+f6vtuuuuqV27dq666qoKz77mmmuywgor5Be/+EX58VdeeSW9evXKKquskrvvvnuJ4qYl8c0uY9/+jsrKynLZZZd955orr7yywrVXXnllateune222y5Jsvfee2fBggU5++yzK6396quvKvwz/m/f/ueSJHXq1EmnTp1SVlaWL7/8cpE+EwAAAMBPnZ20AAAAAPherVq1yo477pgRI0akadOm6dWrV4XzgwYNytixY9OrV6+svPLKmTZtWq666qq0b98+W2yxxXfe98ILL8xOO+2Url275uCDD87nn3+eK664Ik2aNMmZZ5652HN27Ngx55xzTk455ZRMmjQpu+22Wxo1apS33347t99+e/r165cTTjghSdKlS5cMHz48AwYMyCabbJKGDRvmV7/61ULv+84772SXXXZJSUlJfv3rX2fEiBEVzq+//vpZf/31kyTt27fPsccemwsvvDBffvllNtlkk9xxxx15+OGHM2zYsPJAas6cOenZs2dmzJiRE088MSNHjqz0Wbp27Vr++1133ZXnn38+SfLll1/mhRdeyDnnnJMk2WWXXcqfvyjWWmutdOzYMSeccELef//9NG7cOLfddltmzJix0Ovr1auX++67LwceeGA222yz3HvvvRk5cmROPfXU8tcYbrXVVjnssMMyZMiQPPfcc9lhhx1Su3btTJw4MSNGjMhll12WX//61wu9/w477JC2bdumW7duadOmTV555ZVceeWV6dWrVxo1arTInwsAAADgp0ykBQAAAMD/1KdPn9x9993Ze++9U7du3Qrndtlll0yaNCl/+tOf8vHHH6dly5bZaqutctZZZ6VJkybfec8ePXrkvvvuyxlnnJGBAwemdu3a2WqrrXL++eenQ4cOSzTnySefnDXWWCOXXHJJzjrrrCTJiiuumB122CG77LJL+XWHH354nnvuufz5z3/OJZdckpVXXvk7I6233367fNetI444otL5M844o0Ikdd5556VZs2a59tprM3To0Ky++uq55ZZbst9++5VfM3369EyePLl85v924IEHVoi0brvtttx0003lvz/77LN59tlnk3wdhi1OpFW7du3cddddOfroozNkyJDUq1cvu+++e4488shssMEGla6vWbNm7rvvvvTv3z8nnnhiGjVqVP7P7NuuueaadOnSJddee21OPfXU1KpVK6usskoOOOCAdOvW7TvnOeywwzJs2LBcfPHF+fTTT9O+ffscffTR+f3vf7/InwkAAADgp66k7L/3fgcAAACA//Kvf/0ru+22W8aOHZstt9yyuscBAAAAgKWKSAsAAACA/+mXv/xlXnnllbzxxhspKSmp7nEAAAAAYKnidYcAAAAAfKe//e1veeGFFzJy5MhcdtllAi0AAAAAWAJ20gIAAADgO5WUlKRhw4bZZ599cs0116RWLf/NHwAAAAAsLv+vGgAAAADfyX/fBwAAAAA/XI3qHgAAAAAAAAAAAGBZZietRVBaWpoPPvggjRo1SklJSXWPAwAAAAAAAAAAVLOysrLMmTMn7dq1S40a379XlkhrEXzwwQdZccUVq3sMAAAAAAAAAADgJ2by5Mlp3779914j0loEjRo1SvL1F9q4ceNqngYAAAAAAAAAAKhus2fPzoorrljeFn0fkdYi+OYVh40bNxZpAQAAAAAAAAAA5b5pi77P978MEQAAAAAAAAAAgB9EpAUAAAAAAAAAAFAgkRYAAAAAAAAAAECBRFoAAAAAAAAAAAAFEmkBAAAAAAAAAAAUSKQFAAAAAAAAAABQIJEWAAAAAAAAAABAgURaAAAAAAAAAAAABRJpAQAAAAAAAAAAFEikBQAAAAAAAAAAUCCRFgAAAAAAAAAAQIFEWgAAAAAAAAAAAAUSaQEAAAAAAAAAABRIpAUAAAAAAAAAAFAgkRYAAAAAAAAAAECBRFr8rEyePDlHHnlkOnbsmLp166Zly5bp2bNnRo4c+Z3XX3vttenXr1+6dOmSunXrpqSkJIcccsj3Pmfo0KEpKSn53p/77rvvO9f/9a9/zTbbbJNmzZqlXr16WWONNXLiiSdmxowZP+jzAwAAAAAAAADw46tV3QPAj+XJJ5/MjjvumE8++STLL798dtppp0yfPj0PPfRQRo0alYEDB+ass86qsOa2227Lcccdt8TP7NixY7bYYouFnlthhRUqHSsrK0vfvn1z8803p2bNmtl0003Ttm3bPPXUU/nDH/6Q4cOH55FHHslKK620xDMBAAAAAAAAAPDjEmnxs/DFF19kzz33zCeffJJ99tknf/7zn1O/fv0kX8dbO+20UwYNGpQtttgi22+/ffm6Dh065KijjspGG22UjTbaKH//+99z7rnnLvJzt9hiiwwdOnSRr7/66qtz8803p1GjRrn77rvTvXv3JMmXX36Zww8/PDfccEP222+/PPLII4t8TwAAAAAAAAAAqpfXHfKzcPvtt2fy5Mlp2rRprrnmmvJAK0k22WSTDBw4MEkyaNCgCut23XXXXH755enbt2/WX3/91KpVbNd42WWXJUkGDBhQHmglSe3atXP55ZenXbt2efTRR/Pggw8WOgcAAAAAAAAAAFVHpMXPwpNPPpkk6dKlS5o2bVrpfI8ePZIkjz76aKZMmfJjjlZu9uzZef311yvM823169dPt27dkiT/+Mc/ftTZAAAAAAAAAABYcl53yM/Cp59+miRp0aLFQs+3bNkySVJWVpZnnnkmO++8c5U894033sjvf//7TJs2LQ0bNsy6666bXXbZpfx5C5txUeZ8+umnq2Q+AAAAAAAAAACKJ9LiZ6F169ZJkrfeemuh5799/O23366y5z766KN59NFHKxyrV69ezjzzzJx00kkVjjdv3jw1a9bMggUL8tZbb2Xttdf+zjmrckYAAAAAAAAAAIrldYf8LGy77bZJvt6B6tlnn610/pprrin/8+zZs3/w89q2bZvTTjst48ePz0cffZTZs2fnySefTJ8+fTJv3rycfPLJGTx4cIU19erVyy9+8YskyfXXX1/pnhMnTsyYMWOqbEYAAAAAAAAAAH4cIi1+Frbddtt07949ZWVl2WWXXXLXXXdl1qxZeeutt3LCCSfk5ptvTu3atZMkNWr88H8tdtxxx5xzzjnZdNNN07JlyzRq1Cgbb7xxbrrppvzhD39IkgwaNChTp06tsG7gwIEpKSnJv/71r/z2t7/NxIkTM3v27IwePTo77bRT+XVVMSMAAAAAAAAAAD8OpQc/GyNGjEi3bt3y3nvvZZdddknTpk3TsWPHXHTRRTnmmGOywQYbJPn6tYNFOuaYY9KyZcvMmzcvo0aNqnCuR48euf7661OvXr1ce+21WWONNdKkSZPssMMOmT9/fs4+++wfZUYAAAAAAAAAAKpOreoeAH4srVu3zsMPP5wHHnggY8aMyfTp09OmTZvsuuuu2XjjjdOuXbskyXrrrVfoHDVr1szqq6+ejz/+OO+9916l8wcffHB69eqVf/zjH3nllVdSUlKSzp07Z5999smtt976o8wIAAAAAAAAAEDVEWnxs1JSUpLtt98+22+/fYXjb775Zj788MO0aNEiG220UeFzTJ8+PUnSqFGjhZ5v27ZtjjzyyErHH3744SSpND8AAAAAAAAAAD9dXncISf7whz8kSfr165c6deoU+qxnnnkmr7/+epJk0003XeR1kyZNym233ZaGDRumb9++BU0HAAAAAAAAAEBVE2nxszFhwoTMnj27wrGvvvoqgwcPzrXXXpvVVlstp5122g9+zty5c/PHP/4xc+bMqXRu7Nix2XPPPZMkW2yxRaVIa/78+Xn22WcrrXv11VfTq1evfP7557nooovSokWLHzwnAAAAAAAAAAA/jpKysrKy6h7ip2727Nlp0qRJZs2alcaNG1f3OCyhY489Ntdee226dOmSFVZYIfPmzcvjjz+eqVOnZrXVVsvo0aOzyiqrVFjz4YcfZvfddy///b333sv777+fVq1aZdVVVy0/ftVVV5W/JnHmzJlp1qxZ6tatm86dO2ellVbKV199lddffz0vvfRSkmS99dbL/fffn+WXX77C875Zu+qqq2bNNddM06ZNM2nSpDzxxBMpLS3NWWedldNPP72gbwgAAAAAAAAAgEW1OE1RrR9pJqh2O++8cyZNmpRnnnkmTz31VOrWrZs111wzxx9/fI488sjUr1+/0pp58+Zl/PjxlY5/9NFH+eijj8p///YOXcstt1xOP/30PPXUU3n11Vfz8ssv5/PPP0+zZs3So0eP7LXXXunbt+9CX6u43HLL5ZhjjsnDDz+cxx9/PJ999llat26d3r175+ijj16s1yMCAAAAAAAAAPDTYCetRWAnLQAAAAAAAAAA4NsWpymq8SPNBAAAAAAAAAAA8LMk0gIAAAAAAAAAAChQreoeAKrSKiePrO4RfhImnderukcAAAAAAAAAAOD/sZMWAAAAAAAAAABAgURaAAAAAAAAAAAABRJpAQAAAAAAAAAAFEikBQAAAAAAAAAAUCCRFgAAAAAAAAAAQIFEWgAAAAAAAAAAAAUSaQEAAAAAAAAAABRIpAUAAAAAAAAAAFAgkRYAAAAAAAAAAECBRFoAAAAAAAAAAAAFEmkBAAAAAAAAAAAUSKQFAAAAAAAAAABQIJEWAAAAAAAAAABAgURaAAAAAAAAAAAABRJpAQAAAAAAAAAAFEikBQAAAAAAAAAAUCCRFgAAAAAAAAAAQIFEWgAAAAAAAAAAAAUSaQEAAAAAAAAAABRIpAUAAAAAAAAAAFAgkRYAAAAAAAAAAECBRFoAAAAAAAAAAAAFEmkBAAAAAAAAAAAUSKQFAAAAAAAAAABQIJEWAAAAAAAAAABAgURaAAAAAAAAAAAABRJpAQAAAAAAAAAAFEikBQAAAAAAAAAAUCCRFgAAAAAAAAAAQIFEWgAAAAAAAAAAAAUSaQEAAAAAAAAAABRIpAUAAAAAAAAAAFAgkRYAAAAAAAAAAECBRFoAAAAAAAAAAAAFEmkBAAAAAAAAAAAUSKQFAAAAAAAAAABQIJEWAAAAAAAAAABAgURaAAAAAAAAAAAABRJpAQAAAAAAAAAAFEikBQAAAAAAAAAAUCCRFgAAAAAAAAAAQIFEWgAAAAAAAAAAAAUSaQEAAAAAAAAAABRIpAUAAAAAAAAAAFAgkRYAAAAAAAAAAECBRFoAAAAAAAAAAAAFEmkBAAAAAAAAAAAUSKQFAAAAAAAAAABQIJEWAAAAAAAAAABAgURaAAAAAAAAAAAABRJpAQAAAAAAAAAAFEikBQAAAAAAAAAAUCCRFgAAAAAAAAAAQIFEWgAAAAAAAAAAAAUSaQEAAAAAAAAAABRIpAUAAAAAAAAAAFAgkRYAAAAAAAAAAECBRFoAAAAAAAAAAAAFEmkBAAAAAAAAAAAUSKQFAAAAAAAAAABQIJEWAAAAAAAAAABAgURaAAAAAAAAAAAABRJpAQAAAAAAAAAAFEikBQAAAAAAAAAAUCCRFgAAAAAAAAAAQIFEWgAAAAAAAAAAAAUSaQEAAAAAAAAAABRIpAUAAAAAAAAAAFAgkRYAAAAAAAAAAECBRFoAAAAAAAAAAAAFEmkBAAAAAAAAAAAUSKQFAAAAAAAAAABQIJEWAAAAAAAAAABAgURaAAAAAAAAAAAABRJpAQAAAAAAAAAAFEikBQAAAAAAAAAAUCCRFgAAAAAAAAAAQIFEWgAAAAAAAAAAAAUSaQEAAAAAAAAAABRIpAUAAAAAAAAAAFAgkRYAAAAAAAAAAECBRFoAAAAAAAAAAAAFEmkBAAAAAAAAAAAUSKQFAAAAAAAAAABQIJEWAAAAAAAAAABAgURaAAAAAAAAAAAABRJpAQAAAAAAAAAAFEikBQAAAAAAAAAAUKBqjbQWLFiQ008/PR06dEj9+vXTsWPHnH322SkrKyu/pqysLAMHDszyyy+f+vXrp0ePHpk4cWKF+3zyySfZf//907hx4zRt2jQHH3xwPv300wrXvPDCC9lyyy1Tr169rLjiirngggt+lM8IAAAAAAAAAAD8vFVrpHX++efn6quvzpVXXplXXnkl559/fi644IJcccUV5ddccMEFufzyy3PNNddk/PjxadCgQXr27Jkvvvii/Jr9998/L7/8ckaPHp277747Y8eOTb9+/crPz549OzvssENWXnnlPP3007nwwgtz5pln5rrrrvtRPy8AAAAAAAAAAPDzU1L27W2rfmS//OUv06ZNm9x4443lx/bcc8/Ur18/t9xyS8rKytKuXbscf/zxOeGEE5Iks2bNSps2bTJ06ND07t07r7zySjp16pQnn3wyG2+8cZLkvvvuy84775z33nsv7dq1y9VXX53TTjstU6ZMSZ06dZIkJ598cu644468+uqr/3PO2bNnp0mTJpk1a1YaN25cwDdBVVnl5JHVPcJPwqTzelX3CAAAAAAAAAAAy7TFaYqqdSetX/ziF3nwwQfz+uuvJ0mef/75PPLII9lpp52SJG+//XamTJmSHj16lK9p0qRJNttss4wbNy5JMm7cuDRt2rQ80EqSHj16pEaNGhk/fnz5Nd27dy8PtJKkZ8+eee211zJjxoxKc82bNy+zZ8+u8AMAAAAAAAAAALAkalXnw08++eTMnj07a621VmrWrJkFCxbk3HPPzf77758kmTJlSpKkTZs2Fda1adOm/NyUKVPSunXrCudr1aqV5s2bV7imQ4cOle7xzblmzZpVODdkyJCcddZZVfQpAQAAAAAAAACAn7Nq3Unr73//e4YNG5Zbb701zzzzTG666ab84Q9/yE033VSdY+WUU07JrFmzyn8mT55crfMAAAAAAAAAAABLr2rdSevEE0/MySefnN69eydJ1ltvvbzzzjsZMmRIDjzwwLRt2zZJMnXq1Cy//PLl66ZOnZoNN9wwSdK2bdtMmzatwn2/+uqrfPLJJ+Xr27Ztm6lTp1a45pvfv7nm2+rWrZu6detWzYcEAAAAAAAAAAB+1qp1J625c+emRo2KI9SsWTOlpaVJkg4dOqRt27Z58MEHy8/Pnj0748ePT9euXZMkXbt2zcyZM/P000+XXzNmzJiUlpZms802K79m7Nix+fLLL8uvGT16dNZcc81KrzoEAAAAAAAAAACoStUaaf3qV7/Kueeem5EjR2bSpEm5/fbbc/HFF2f33XdPkpSUlOTYY4/NOeeckzvvvDMvvvhi+vTpk3bt2mW33XZLkqy99trZcccdc+ihh+aJJ57Io48+miOPPDK9e/dOu3btkiT77bdf6tSpk4MPPjgvv/xyhg8fnssuuywDBgyoro8OAAAAAAAAAAD8TFTr6w6vuOKKnH766Tn88MMzbdq0tGvXLocddlgGDhxYfs3vfve7fPbZZ+nXr19mzpyZLbbYIvfdd1/q1atXfs2wYcNy5JFHZrvttkuNGjWy55575vLLLy8/36RJk4waNSpHHHFEunTpkpYtW2bgwIHp16/fj/p5AQAAAAAAAACAn5+SsrKysuoe4qdu9uzZadKkSWbNmpXGjRtX9zh8j1VOHlndI/wkTDqvV3WPAAAAAAAAAACwTFucpqhaX3cIAAAAAAAAAACwrBNpAQAAAAAAAAAAFEikBQAAAAAAAAAAUCCRFgAAAAAAAAAAQIFEWgAAAAAAAAAAAAUSaQEAAAAAAAAAABRIpAUAAAAAAAAAAFAgkRYAAAAAAAAAAECBRFoAAAAAAAAAAAAFEmkBAAAAAAAAAAAUSKQFAAAAAAAAAABQIJEWAAAAAAAAAABAgURaAAAAAAAAAAAABRJpAQAAAAAAAAAAFEikBQAAAAAAAAAAUCCRFgAAAAAAAAAAQIFEWgAAAAAAAAAAAAUSaQEAAAAAAAAAABRIpAUAAAAAAAAAAFAgkRYAAAAAAAAAAECBRFoAAAAAAAAAAAAFEmkBAAAAAAAAAAAUSKQFAAAAAAAAAABQIJEWAAAAAAAAAABAgURaAAAAAAAAAAAABRJpAQAAAAAAAAAAFEikBQAAAAAAAAAAUCCRFgAAAAAAAAAAQIFEWgAAAAAAAAAAAAUSaQEAAAAAAAAAABRIpAUAAAAAAAAAAFAgkRYAAAAAAAAAAECBRFoAAAAAAAAAAAAFEmkBAAAAAAAAAAAUSKQFAAAAAAAAAABQIJEWAAAAAAAAAABAgURaAAAAAAAAAAAABRJpAQAAAAAAAAAAFEikBQAAAAAAAAAAUCCRFgAAAAAAAAAAQIFEWgAAAAAAAAAAAAUSaQEAAAAAAAAAABRIpAUAAAAAAAAAAFAgkRYAAAAAAAAAAECBRFoAAAAAAAAAAAAFEmkBAAAAAAAAAAAUSKQFAAAAAAAAAABQIJEWAAAAAAAAAABAgURaAAAAAAAAAAAABRJpAQAAAAAAAAAAFEikBQAAAAAAAAAAUCCRFgAAAAAAAAAAQIFEWgAAAAAAAAAAAAUSaQEAAAAAAAAAABRIpAUAAAAAAAAAAFAgkRYAAAAAAAAAAECBRFoAAAAAAAAAAAAFEmkBAAAAAAAAAAAUSKQFAAAAAAAAAABQIJEWAAAAAAAAAABAgURaAAAAAAAAAAAABRJpAQAAAAAAAAAAFEikBQAAAAAAAAAAUCCRFgAAAAAAAAAAQIFEWgAAAAAAAAAAAAUSaQEAAAAAAAAAABRIpAUAAAAAAAAAAFAgkRYAAAAAAAAAAECBRFoAAAAAAAAAAAAFEmkBAAAAAAAAAAAUSKQFAAAAAAAAAABQIJEWAAAAAAAAAABAgURaAAAAAAAAAAAABRJpAQAAAAAAAAAAFEikBQAAAAAAAAAAUCCRFgAAAAAAAAAAQIFEWgAAAAAAAAAAAAUSaQEAAAAAAAAAABRIpAUAAAAAAAAAAFAgkRYAAAAAAAAAAECBRFoAAAAAAAAAAAAFEmkBAAAAAAAAAAAUSKQFAAAAAAAAAABQIJEWAAAAAAAAAABAgURaAAAAAAAAAAAABRJpAQAAAAAAAAAAFEikBQAAAAAAAAAAUCCRFgAAAAAAAAAAQIFEWgAAAAAAAAAAAAUSaQEAAAAAAAAAABRIpAUAAAAAAAAAAFAgkRYAAAAAAAAAAECBRFoAAAAAAAAAAAAFEmkBAAAAAAAAAAAUSKQFAAAAAAAAAABQIJEWAAAAAAAAAABAgURaAAAAAAAAAAAABRJpAQAAAAAAAAAAFEikBQAAAAAAAAAAUCCRFgAAAAAAAAAAQIFEWgAAAAAAAAAAAAUSaQEAAAAAAAAAABRIpAUAAAAAAAAAAFAgkRYAAAAAAAAAAECBRFoAAAAAAAAAAAAFEmkBAAAAAAAAAAAUSKQFAAAAAAAAAABQIJEWAAAAAAAAAABAgURaAAAAAAAAAAAABRJpAQAAAAAAAAAAFEikBQAAAAAAAAAAUCCRFgAAAAAAAAAAQIFEWgAAAAAAAAAAAAUSaQEAAAAAAAAAABRIpAUAAAAAAAAAAFAgkRYAAAAAAAAAAECBRFoAAAAAAAAAAAAFEmkBAAAAAAAAAAAUSKQFAAAAAAAAAABQIJEWAAAAAAAAAABAgURaAAAAAAAAAAAABRJpAQAAAAAAAAAAFEikBQAAAAAAAAAAUCCRFgAAAAAAAAAAQIFEWgAAAAAAAAAAAAUSaQEAAAAAAAAAABRIpAUAAAAAAAAAAFAgkRYAAAAAAAAAAECBRFoAAAAAAAAAAAAFEmkBAAAAAAAAAAAUSKQFAAAAAAAAAABQIJEWAAAAAAAAAABAgURaAAAAAAAAAAAABRJpAQAAAAAAAAAAFEikBQAAAAAAAAAAUCCRFgAAAAAAAAAAQIFEWgAAAAAAAAAAAAUS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fph11lnnO8+vu+66mTJlyg8eCgAAAAAAAAAAYFmxWJFWy5YtM2nSpO88//bbb6d58+Y/dCYAAAAAAAAAAIBlxmJFWj179sxpp52W+fPnVzo3b968nH766dlxxx2rbDgAAAAAAAAAAIClXa3FuXjQoEHZeOONs/rqq+eII47IWmutlbKysrzyyiu56qqrMm/evPzlL38palYAAAAAAAAAAIClzmJFWu3bt8+4ceNy+OGH55RTTklZWVmSpKSkJNtvv32uvPLKrLjiioUMCgAAAAAAAAAAsDRarEgrSTp06JB77703M2bMyMSJE5Mkq622Wpo3b17lwwEAAAAAAAAAACztFjvS+kazZs2y6aabVuUsAAAAAAAAAAAAy5wa1T0AAAAAAAAAAADAskykBQAAAAAAAAAAUCCRFgAAAAAAAAAAQIFEWgAAAAAAAAAAAAUSaQEAAAAAAAAAABRIpAUAAAAAAAAAAFAgkRYAAAAAAAAAAECBRFoAAAAAAAAAAAAFEmkBAAAAAAAAAAAUSKQFAAAAAAAAAABQIJEWAAAAAAAAAABAgURawGIZNmxY+vTpkw022CCtW7dO7dq106RJk2y66aYZMmRIPv3004Wu++STT3LKKadk7bXXTv369dOsWbN07949f/nLX77zWY899lgOP/zwdO3aNSussELq1auXBg0apFOnTjnqqKMyadKkha6bMGFCjj322HTv3j0rrbRSlltuudSvXz+rrbZaDj744Lz44otV8VUAAAAAAAAAACySkrKysrLqHuKnbvbs2WnSpElmzZqVxo0bV/c4fI9VTh5Z3SP8JEw6r1dh995iiy3y2GOPZe21186KK66Y5s2bZ+rUqRk3blw+//zzrLbaavnPf/6Tdu3ala956623su222+add95JixYtsvnmm+fzzz/P448/nrlz5+bAAw/Mn//855SUlFR41u9///uce+65WWmlldKxY8e0adMms2bNyjPPPJOpU6emQYMGufvuu7P11ltXWHfDDTfk0EMPTZs2bbLmmmumbdu2mTt3bl588cW88847qVWrVm6++ebsu+++hX1PAAAAAAAAAMCybXGaIpHWIhBpLT1EWl8rMtIaP358Vl999TRv3rzC8enTp2e33XbLI488kt69e+evf/1r+bnNNtssTzzxRLbeeuv885//TLNmzZIkb7zxRnbccce8+eabue6663LooYdWuOcrr7yS+vXrZ5VVVqlwfP78+fnd736Xyy67LO3bt8+kSZNSs2bN8vOTJk3KF198kbXWWqvCutLS0lx88cU58cQTs9xyy+W9994rnwUAAAAAAAAAYHEsTlPkdYfAYtlss80qBVpJ0qJFiwwePDhJMmrUqPLj48aNyxNPPJGaNWvmhhtuqBBFrbbaarn44ouTJGeffXb+uxlde+21KwVaSVKnTp1ceOGFqVevXt57771MmDChwvlVVlmlUqCVJDVq1MgJJ5yQVVddNXPnzs0jjzyy6B+8ii3payOnT5+eU045Jeutt14aNGiQOnXqpH379tlrr70yduzY73ze3LlzM2TIkGy44YZp0KBBGjVqlE022SRXXHFFFixYsNA1r732Wi699NLsvPPOWWGFFVKnTp00btw4m2yyyffOCAAAAAAAAABUVKu6BwCWHbVqff1XSt26dcuPPfnkk0m+Dqc6duxYaU2PHj2SJJMnT84TTzyRzTbbbJGeVVJSkho1alR63pLO+WO7+uqry18budFGG1V4beSTTz6ZP/3pT5VeG/nmm2+me/fu+eCDD9KiRYtsvfXWWW655fLyyy/nH//4R/7xj3/koosuyoABAyo865NPPsm2226b559/Po0aNUq3bt1Ss2bNPP744zn66KNz11135e67706dOnUqrNtuu+3y/vvvp169etl4443TvXv38hmfeuqp3HjjjRkzZkxWWmmlH+U7AwAAAAAAAICllZ20gCoxZ86cnHnmmUmSXXbZpfz4N7sttWjRYqHrlltuudSvXz9J8vTTTy/SsxYsWJCzzjorc+fOTadOnbLaaqst8pzXXXddXn/99bRu3Tqbb775Iq+rahdddFE+/vjjvPzyy7nvvvty66235sEHH8zkyZOzxRZb5I033sjxxx9fYc2AAQPywQcfpFevXnnnnXcycuTIjBgxIhMmTMi1116bJDnppJPy3nvvVVj329/+Ns8//3zWXXfdvPzyyxk1alTuvffevPrqq9l0000zevTonHXWWZVmXHPNNXPjjTfmo48+ysMPP5y//vWvGTNmTF555ZWss846efPNN9O3b9/CviMAAAAAAAAAWFaUlP33+8WoZHHeH0n1WuXkkdU9wk/CpPN6Ff6MUaNG5dZbb01paWn57kpz5szJjjvumL/97W9p0qRJkuSGG27IoYcemlatWmXatGmV7jNlypQsv/zySZITTjghF154YaVr3n333QwcODDJ17tCPfvss3nvvfey2mqr5Y477sg666yz0Bnnzp2bww8/PEkya9asvPTSS3njjTfSpk2bjBgxIltuuWWVfBdV7eGHH0737t3TvHnzTJ8+vfx4o0aN8umnn+aJJ57IJptsUmndGmuskYkTJ+af//xndt999yTJBx98kPbt26esrCwPPfRQtt566wprXnjhhWywwQapX79+pk6dmkaNGi3SjI888kj59zd58uS0b99+CT8tAAAAAAAAACydFqcp8rpDYIlMmDAhN910U4Vj++23Xy6++OLyQCtJttlmm5SUlOSjjz7KHXfckd12263Cmmuuuab8z7Nnz17osz755JNKz9poo43ypz/96TsDrSSZP39+pXWrrrpqbrzxxp9soJV89+sY69WrV74z2fdp2bJl+Z+feuqplJWVpU6dOunevXula9dff/20atUqH330Ue65557ss88+izRj586dy/8s0gIAAAAAAACA7+d1h8ASOfbYY1NWVpb58+fnjTfeyEUXXZR77703nTp1ytixY8uv69ixYw444IAkyW9+85vccsstmT59et57772cf/75GTx4cGrXrp0kqVFj4X8lbbjhhikrK0tpaWnee++9/P3vf8/cuXPTpUuXXH755d85Y9OmTVNWVpaysrJMmTIl99xzT1q1apVtttkmJ554YhV+G1Xnu14bmSQ77bRTkpS/6vHbrr/++kycODHrrbdeunbtWn78m6iradOm3/n9fhN1LerrJpNk4sSJ5X/+Zic0AAAAAAAAAGDhvO5wEXjd4dLD6w6/9mO87nBhxo8fn65du6Z9+/Z57bXXUr9+/STJZ599lgMOOCB33HFHpTV777135s+fnzvuuCOnnnpqzj333EV61syZM7POOutkypQpeeaZZ7LBBhss0rr58+dns802y3PPPZe77rorv/zlLxf58xVhUV8bmSRTp05Nr1698vTTT6dFixbZfPPNs9xyy+Xll1/Oq6++mp122inXX399hWjqgQceyPbbb5/k6wCsYcOGFZ5fWlqaRo0aZe7cufn1r3+dESNGLNLcvXv3zvDhw7PRRhstVtwFAAAAAAAAAMuKxWmK7KQFVJnNNtssnTp1yuTJk/PUU0+VH2/QoEFuv/32PPbYYxk4cGAOPfTQnHTSSRkzZkyGDx+eqVOnJknWW2+9RX5W06ZNs/vuu6e0tDR33nnnIq+rU6dO9t9//yTJ7bffvsjrivLNayP/8pe/ZNSoUZkzZ07222+/DB06tEKglSRt2rTJv//97xxwwAGZPn16Ro4cmREjRmTChAlZYYUVsu2226ZVq1YV1my22WZZbrnlkiQ33HBDpefffPPN5btyfdfrJv/b0KFDM3z48NSsWTOXXXbZknxsAAAAAAAAAPhZ+clEWuedd15KSkpy7LHHlh/74osvcsQRR6RFixZp2LBh9txzz/KY4xvvvvtuevXqleWWWy6tW7fOiSeemK+++qrCNf/+97+z0UYbpW7dullttdUydOjQH+ETwc9TgwYNkiTTpk2rdK5r164566yzct111+W8887LNttskzlz5uS5555LrVq1ss0221TZs4pYV4RFfW1kkrz66qvp3Llz7rrrrlx11VWZPHlyZs2alX//+99p06ZNjj/++Oy8885ZsGBB+ZpGjRrl+OOPT5Kccsopufzyy/Phhx9m2rRpueGGG3LUUUf9z9dNftuDDz6Yww47LElywQUXZIsttqiqrwIAAAAAAAAAllk/iUjrySefzLXXXpv111+/wvHjjjsud911V0aMGJH//Oc/+eCDD7LHHnuUn1+wYEF69eqV+fPn57HHHstNN92UoUOHZuDAgeXXvP322+nVq1e22WabPPfcczn22GNzyCGH5P777//RPh/8XHz88cd5/vnnkyRrrLHGIq256qqr8vnnn2evvfZKmzZtFut5Y8aMWaxnfePBBx9conVFql27djp27JgBAwbk3nvvzYwZM3LAAQfk888/T5J89dVX2XPPPfPGG2/k+uuvT//+/dO+ffs0btw4W221VUaNGpW2bdtm9OjRufnmmyvc+4wzzshvf/vbfPHFFznmmGPSrl27tGnTJoceemg22mij/OY3v0mSNG/e/HtnfOSRR7Lrrrtm/vz5OeOMMzJgwIBivgwAAAAAAAAAWMZUe6T16aefZv/998/111+fZs2alR+fNWtWbrzxxlx88cXZdttt06VLl/z5z3/OY489lscffzxJMmrUqEyYMCG33HJLNtxww+y00045++yz88c//jHz589PklxzzTXp0KFDLrrooqy99to58sgj8+tf/zqXXHLJd840b968zJ49u8IP8PWr+YYNG5Yvvvii0rnXX389e+21V+bNm5fNN9+8wqsL33zzzXz00UcVri8rK8uf/vSnnH766WnevHkuuuiiSvccMmRIpXVJMmPGjBx11FF56qmn0qRJk+y9994Vzl966aWZPHlypXVz587NOeeck9tuuy21atXKQQcdtMif/ce0sNdGjh8/PhMmTEjdunUrxKrfaNasWXbaaackyQMPPFDhXM2aNXP11VfnhRdeyDnnnJN+/fplwIABufPOO/PQQw+V/x33fa+bfOyxx7Lzzjvns88+y2mnnZYzzzyzij4tAAAAAAAAACz7alX3AEcccUR69eqVHj165Jxzzik//vTTT+fLL79Mjx49yo+ttdZaWWmllTJu3LhsvvnmGTduXNZbb70Ku+/07Nkz/fv3z8svv5zOnTtn3LhxFe7xzTXffq3ifxsyZEjOOuusqvuQsIyYNm1aDjjggBx22GHp3Llz2rdvn/nz5+fdd9/NM888k9LS0qy99toZPnx4hXV33XVXTjzxxGy00UZZaaWVUlZWlqeeeirvvPNOWrdunXvvvTfLL798peedeuqpOf3007PeeuulY8eOqVWrVt5///08++yz+eyzz9KkSZOMGDGi0g5cl156aQYMGJC11147a665ZurVq5cPP/wwzz//fGbMmJG6devm+uuvz7rrrlvo9/VD/PcrGd99990kyXLLLZeaNWsudE2TJk2SJJ988slCz6+33nqVQqyysrI8+uijSZLtt99+oesef/zx7LjjjpkzZ05OPfXUCn9XAwAAAAAAAAD/W7VGWn/729/yzDPP5Mknn6x0bsqUKalTp06aNm1a4XibNm0yZcqU8mv+O8745vf/dc3s2bPz+eefp379+pWefcopp1R4jdfs2bOz4oorLv4HhGXMOuusk3PPPTcPP/xwXn311Tz77LP58ssv07x582y33XbZY489ctBBB6Vu3boV1nXr1i177rlnnnjiibz00kspKSnJqquumtNPPz0DBgyo9O/5N6688so8/PDDefbZZ/Pggw/m008/TaNGjbLeeuuVB5kLe0Xi4MGDM2rUqDz11FMZO3ZsZs6cmQYNGqRjx445+OCD079//6y66qpFfEVVYmGvjVxhhRWSfL2L2MSJE7P66qtXWjd+/PgkSYcOHRb5WX//+9/z7rvvpmvXrunSpUul80888UR69uxZHmide+65i/15AAAAAAAAAODnrtoircmTJ+eYY47J6NGjU69eveoaY6Hq1q1bKTIBklatWuXUU09d7HWbbLJJ/va3vy32uiOOOCJHHHHEYq/bb7/9st9++y32uh/LhAkT8uyzz2bPPfes9Pff66+/nsMOO6zSayO7du2aFVZYIe+//34OOeSQ/OMf/0irVq2SJKWlpbngggsybty4JMm+++5b4Z4ffPBBFixYUCk2vfvuu9OvX7/UrVs311xzTaU5n3rqqeywww6ZPXu2QAsAAAAAAAAAfoBqi7SefvrpTJs2LRtttFH5sQULFmTs2LG58sorc//992f+/PmZOXNmhV12pk6dmrZt2yZJ2rZtmyeeeKLCfadOnVp+7pv//ebYt69p3LjxQnfRAijakrw2snbt2rn55pvzq1/9KmPHjs1qq62WzTbbLI0aNcrzzz+fN998M8nXr4jccsstKzzviSeeyB577JENNtggHTp0SO3atfPCCy/k1VdfTcOGDXPHHXdk/fXXrzTnDjvskFmzZqVp06Z5//3307dv34V+npNPPjlrrbVW1X1BAAAAAAAAALCMqbZIa7vttsuLL75Y4dhBBx2UtdZaKyeddFJWXHHF1K5dOw8++GD23HPPJMlrr71W/lqu5OudZc4999xMmzYtrVu3TpKMHj06jRs3TqdOncqvueeeeyo8Z/To0eX3APixLelrI7fddtu8+OKLufjii/Pggw/mkUceyVdffZVWrVpl9913T//+/bP99ttXet66666bPn36ZNy4cRk9enQWLFiQlVZaKccdd1yOP/748lcp/rcZM2YkSWbOnJmbbrrpOz9P3759RVoAAAAAAAAA8D1KysrKyqp7iG9svfXW2XDDDXPppZcmSfr375977rknQ4cOTePGjXPUUUclSR577LEkX++8teGGG6Zdu3a54IILMmXKlPzf//1fDjnkkAwePDhJ8vbbb2fdddfNEUcckd/85jcZM2ZMjj766IwcOTI9e/ZcpLlmz56dJk2aZNasWWncuHHVf3CqzConj6zuEX4SJp3X6wet9z1+7Yd+jwAAAAAAAADAsmtxmqJq20lrUVxyySWpUaNG9txzz8ybNy89e/bMVVddVX6+Zs2aufvuu9O/f/907do1DRo0yIEHHphBgwaVX9OhQ4eMHDkyxx13XC677LK0b98+N9xwwyIHWgAAAAAAAAAAAD/ET2onrZ8qO2ktPewA9TU7aVUNO2kBAAAAAAAAAN9lcZqiGj/STAAAAAAAAAAAAD9LP+nXHQIszexIZjcyAAAAAAAAAEjspAUAAAAAAAAAAFAokRYAAAAAAAAAAECBRFoAAAAAAAAAAAAFEmkBAAAAAAAAAAAUSKQFAAAAAAAAAABQIJEWAAAAAAAAAABAgURaAAAAAAAAAAAABRJpAQAAAAAAAAAAFEikBQAAAAAAAAAAUCCRFgAAAAAAAAAAQIFEWgAAAAAAAAAAAAUSaQEAAAAAAAAAABRIpAXAUmvYsGHp06dPNthgg7Ru3Tq1a9dOkyZNsummm2bIkCH59NNPF+k+V111VUpKSlJSUpJDDjnkO6/77LPPMmTIkGy88cZp3LhxateunbZt2+aXv/xl7rzzzv/5nLFjx6Z3795p37596tatm5YtW6ZLly457rjj8uWXXy7y5wYAAAAAAABg6SLSAmCpdfXVV+eWW27JV199lY022ih77bVXNt5447z00ks59dRT07lz53zwwQffe4+33norv/vd71JSUvK9102fPj2bbrppTj311Lz22mvp2rVr9thjj6ywwgoZOXJkdt111xxzzDELXVtWVpZjjz02W221Vf75z3+mQ4cO2XPPPbPRRhtl2rRpufTSSzNv3rwl/h4AAAAAAAAA+GmrVd0DAMCSuuiii7L66qunefPmFY5Pnz49u+22Wx555JEcf/zx+etf/7rQ9aWlpenbt29KSkrSp0+f3HTTTd/5rEGDBmXChAnp0qVLRo0aVeGZ99xzT3bddddcfvnl2XfffbP55ptXWHvmmWfmsssuyy9+8YvceuutWXnllSucf/LJJ1OvXr3F/fgAAAAAAAAALCXspAXAUmuzzTarFGglSYsWLTJ48OAkyahRo75z/WWXXZaHH344559/flZZZZXvfdaYMWOSJCeddFKlZ+68887ZZpttkiTjxo2rcO61117L4MGD06ZNm4wcObJSoJUkm2yySWrV0k0DAAAAAAAALKtEWgAsk76JnurWrbvQ86+99lpOO+20bLXVVunfv///vN+i7nTVsmXLCr9fffXV+eqrr3LooYemadOmi3QPAAAAAAAAAJYttu0AYJkzZ86cnHnmmUmSXXbZpdL5BQsW5MADD0xJSUluvPHGlJSU/M977rTTTnnqqady/vnn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AACABRHSAgAAAAAAAAAAAAAAAAALIqQFAAAAAAAAAAAAAAAAABZESAsAAAAAAAAAAAAAAAAALIiQFgAAAAAAAAAAAAAAAABYECEtAAAAAAAAAAAAAAAAALAgQloAAAAAAAAAAAAAAAAAYEGEtAAAAAAAAAAAAAAAAADAgghpAQAAAAAAAAAAAAAAAIAFEdICAAAAAAAAAAAAAAAAAAsipAUAAAAAAAAAAAAAAAAAFkRICwAAAAAAAAAAAAAAAAAsiJAWAAAAAAAAAAAAAAAAAFgQIS0AAAAAAAAAAAAAAAAAsCBCWgAAAAAAAAAAAAAAAABgQYS0AAAAAAAAAAAAAAAAAMCCCGkBAAAAAAAAAAAAAAAAgAUR0gIAAAAAAAAAAAAAAAAACyKkBQAAAAAAAAAAAAAAAAAWREgLAAAAAAAAAAAAAAAAACyIkBYAAAAAAAAAAAAAAAAAWBAhLQAAAAAAAAAAAAAAAACwIEJaAAAAAAAAAAAAAAAAAGBBhLQAAAAAAAAAAAAAAAAAwIIIaQEAAAAAAAAAAAAAAACABRHSAgAAAAAAAAAAAAAAAAALIqQFAAAAAAAAAAAAAAAAABZESAsAAAAAAAAAAAAAAAAALIiQFgAAAAAAAAAAAAAAAABYECEtAAAAAAAAAAAAAAAAALAgQloAAAAAAAAAAAAAAAAAYEGEtAAAAAAAAAAAAAAAAADAgghpAQAAAAAAAAAAAAAAAIAFEdICAAAAAAAAAAAAAAAAAAsipAUAAAAAAAAAAAAAAAAAFkRICwAAAAAAAAAAAAAAAAAsiJAWAAAAAAAAAAAAAAAAAFgQIS0AAAAAAAAAAAAAAAAAsCBCWgAAAAAAAAAAAAAAAABgQYS0AAAAAAAAAAAAAAAAAMCCCGkBAAAAAAAAAAAAAAAAgAUR0gIAAAAAAAAAAAAAAAAACyKkBQAAAAAAAAAAAAAAAAAWREgLAAAAAAAAAAAAAAAAACyIkBYAAAAAAAAAAAAAAAAAWBAhLQAAAAAAAAAAAAAAAACwIEJaAAAAAAAAAAAAAAAAAGBBhLQAAAAAAAAAAAAAAAAAwIIIaQEAAAAAAAAAAAAAAACABRHSAgAAAAAAAAAAAAAAAAALIqQFAAAAAAAAAAAAAAAAABZESAsAAAAAAAAAAAAAAAAALIiQFgAAAAAAAAAAAAAAAABYECEtAAAA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vy4XFxedP39eERERio2NVe/evU1q3nnnHV25ciXF8WJiYhQUFCRJql27dop93NzcVL9+/RTbvL29070GAAAAAAAAAAAAAI9GSAsAACAT+Pj4aMCAAapQoYIqVqyocePG6ccff3xkTVJSkpo1a6bt27erZ8+emjRpkhwdHY3td+7c0W+//WZWN2nSpFTH/OKLLxQUFKRSpUqpRo0aKfYpXbq05s2bl7aFAQAAAAAAAAAAAMgwQloAAACZoHv37iafrawef6v03LlztXXrVtWrVy/FawZtbW1VuXLldM1jzpw5kqSuXbumqy6nOH78uDZu3KgDBw7owIEDOnr0qO7fv68xY8Zo6NChj6xNTEzUjz/+qB9//FGHDx9WbGys8ufPrzJlyuidd94xO5Fs165d+umnnxQREaGoqChdvXpV1tbWKlasmN566y31799fnp6eZu+Ji4vTL7/8YpzjwYMHdfPmTXl5eenUqVOZuR0AAAAAAAAAAAB4RhDSAgAAyCbTpk2TJH388ceZMt7OnTt1/Phx2djYqHPnzpkyZlbLymsj161bp5kzZ8rDw0Pe3t5yc3PTjRs3dPDgQc2YMUNz587V2rVrVatWLZO6kydPqn379hlZJgAAAAAAAAAAAJ4zhLQAAACywT///KPDhw/L2tpar7/+us6cOaOlS5fq7NmzcnR01GuvvaamTZvK1tY2zWMmn6IVEBAgd3f3R7579OjROn/+vHLnzq3SpUurYcOG8vDwyPC6Miorr41s3769unfvbnZa1p07d/TJJ59o6tSp6tixo86ePStra2tju5OTk7p06aKKFSuqQoUKun79uho1apSxhQMAAAAAAAAAAOCZRkgLAAAgGySHhgoUKKAffvhB/fv31927d036lChRQqtWrdIrr7zy2PHi4uK0dOlSSVK3bt0e2ffYsWMaMWKEyTMbGxu9//77+uKLL2Rjk33/iZiV10aWKVMmxfFsbW01ceJEffvtt4qOjlZkZKR8fX2N7V5eXsZAnCRt3br1sXMEAAAAAAAAAADA8+3xv+sFAACATHf16lVJUkxMjD744AM1bdpUv//+u27evKndu3frtdde05kzZ1S/fn1j30dZunSpbt26JXd3dwUEBKTYx9nZWR999JG2bdumCxcuKC4uTr/99pv69u0rg8GgKVOmmF0J+DTI7GsjJclgMBgDYnZ2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2djY6JtvvlGtWrVMvn799VdJD066qlWrltq0aZOmMfPnz69ChQpJkqKjox/Z9+eff9bt27fl4eEhf3//jC0mG2V32O1hb7/9tsqXLy9JZlf/5XRZuY9OTk7G7+Pi4lKsvXXrlvH7vHnzZsp8ssKT7ONnn32mgwcPatSoUfL29s60uXz44YdydXVVQkKCNm7cmGnjZqWFCxeqU6dOKleunAoVKqRcuXLJ2dlZr776qsaPH2/yc5Js/fr16t69uypXrqzChQvLzs5OTk5OKl++vIYMGaIrV66k+r64uDiNHz9elStXVt68eZUrVy65u7urUaNGWrNmjSWXCgDAU+/pvOwbAAAAAAAAAAA8F+7du6dt27al2n727FmdPXtWxYoVS9N49+/f140bNySZBmFSMmfOHElSly5d0nVyT07zcNjtm2++MWk7duyYpAdht9DQULm7uxtPu3qU5LDbhQsXHht2+68yZcro0KFD6a7Lblm5j05OTsqfP79iYmIUFRWlcuXKmdWeO3dOkuTq6prqlYg50ZPs46pVqyQ9CPatW7fOpObs2bOSpODgYNWqVUuStHXr1jTNxdraWi+99JKuXLny1P08Jps5c6Z27dqlMmXKqGLFisqfP7/++ecf7d69W/v379ecOXO0bds2vfDCC8aahQsXauHChSpZsqR8fHxUsGBBXb16Vfv27dP48eM1e/Zsbd68WWXLljV519WrV1WzZk1FRkbK0dFRr7/+ulxcXHTq1CkFBwcrODhYH3zwgaZOnZrV2wAAwFOBkBYAAAAAAAAAAMiRrl+/nmpbYGCg5s+frzFjxmjo0KFpHnPNmjWKj4+XwWBQ5cqVU+135MgR7d+/XwaDQV26dEnPtHOk7Ay7/dfVq1efqC4nyMp9rFixokJDQxUeHq7GjRub1YaHhxv7PW2edB937NiRas3Fixd18eLFdM/laf55lKTJkyfrpZdeUv78+U2eX716Vc2aNdOOHTvUv39//fzzz8a2AQMGaNKkSXJ3dzepuXXrlrp27aply5ape/fu2r17t0n76NGjFRkZqUqVKmnjxo0m71y3bp2aNm2qadOmqW3btvLz87PAagEAeLo9vX/sAwAAAAAAAAAA4D+ioqL0008/6d9//zVrW716tbp37y5Jat++vVlA4WGzZ8+WJPn7+6c5cJNTXb9+XUlJSSl+de7cWZI0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Ty9CWgAAAAAAAAAAAAAAIMusWrVKkhQUFKR169aZtJ09e1aSFBwcbAxibd261aRu//79ZiGtixcvSpIOHDhgbFu8eLFZsAYPXLhwQU2bNtVvv/2msWPHqm3btipUqJAiIyM1dOhQjRo1SqtXr1ZYWJicnJyye7qZZvz48Tp27Jh69OihESNGmLXb29urfPnyJs/++zmZo6OjJk+erGXLlmnPnj2KjY1V3rx5LTBrPCsIaQEAAAAAAAAAAAAAnmqeg4Kzewo5wtkJDbN7CumyY8eOVNsuXrxoDF79V3j4/7V35/E1Xev/wD/rZB7JQCKRGGOMUvNUNauhRdtbVUMQqnVRRImiYmgRNRaXlkZbret2UqWD4dua56RoqaHmMSKICJHkPL8//PZujiREsuMkzuf9enlV9tk5nvN0n7XW3vvZa+3N8feuX7+OTZs2AQDu3LmTvwCfYGFhYdizZw+io6Px9ttv69vr1auHNWvWoE6dOti/fz8++OADTJw40YqRGictLQ3/+c9/AMDiM+eHvf29shuTyWQxIxdRdnK/sCsRERERERERERERERERERFRPv3+++8QkWz/aLMbhYeH69s0q1atyvH3YmJiAACtWrXSt5UtW9YaH6/QO3/+PNavXw8A6N69e5bXHRwc8PLLLwMANmzY8FhjK0ixsbFISEhAQEAAKlasiIMHD2LixIkYOHAgIiMjsXbtWpjN5ly/X2pqKt555x0AQJs2beDi4lJQodMTgjNpEREREREREREREREREREREdmIM2fO6H/PaXm+YsWKAQASExMfS0yPw4EDBwAApUuXRmRkJKKjoy2KAKdPn46nn34aq1atQnBwcJbfj42Nxbx58yAiuHLlCvbs2YOEhATUq1cPS5cufWyfg4ouFmkRERERERERERERERERERFRnsXGxmLQoEH6z3///TcAYPHixVizZo2+/bvvvkOpUqUee3xkKTAwUP/7rl270KZNmyz77Ny5EwBQrly5xxZXQbt69SoAIC4uDrt378a///1vDB06FP7+/vrPcXFx6NixI2JjY7MsX3jmzBl8+umnFttat26NxYsXW+SUKCdc7pCIiIiIiIiIiIiIiIiIiIjyLCkpCbt27dL/JCQkAADOnTtnsT01NdXKkRIABAcHo169egCAt956C6dOnbJ4ffny5Vi5ciUA4LXXXnvc4RUYbdastLQ0dO/eHfPnz0elSpXg6emJ1q1bY/369XB2dsYff/yB//73v1l+v0uXLhARpKen49SpU1iyZAkOHz6M0NBQfP3114/741ARxJm0iIiIiIiIiIiIiIiIiIiIKM+aN29usWxcfkRFRSEqKuqRf69Pnz7o06ePITFYS15mJLt48SK6du2qv3bu3DkAwOrVq9GwYUN9+8KFC1G7dm39508++QQtWrTA4cOHUbVqVTRs2BC+vr44fPgw/vzzTwBAz5490aNHjwL4pNbh4eGh/33gwIFZXg8ODkbHjh3xzTffYMOGDejVq1e272NnZ4cyZcogPDwcrVq1QvXq1dG3b180bdoU/v7+BRY/FX0s0iIiIiIiIiIiIiIiIiIiIiKyMm1GsvudO3dOL74CYDEjWWpqara/c+XKFVy5csXivTMLDQ3FH3/8gdmzZ+Onn37Cnj17kJqaCi8vL7Rr1w79+vXDK6+8YsTHKjTKly+f7d+z2+fixYu5es+yZcuiRYsWWLt2LdavX59jYRcRwCItIiIiIiIiIiIiIiIiIiIiIqvLy4xkZcuWzfMsZn5+fpg2bRqmTZuWp98vamrXrg2lFEQECQkJCAoKyrKPtlSnu7t7rt/Xzc0NABAfH29MoPTEMlk7ACIiIiIiIiIiIiIiIiIiIiKiguTv74+mTZsCADZs2JDl9bS0NGzatAkAUL9+/Vy9Z2pqKrZu3QoAqFSpkkGR0pOKM2kRERERERERERERERERERERykautXYIhcKpaR2tHQIVkAkTJqB169aYOnUqnnnmGTRs2BAAkJ6ejoiICJw4cQIeHh7o27cvgHuzY33zzTfo0aMHPD09Ld7r/PnzGD58OC5cuICyZcuiTZs2j/3zUNHCIi0iIiIiIiIiIiIiIiIiIiIieuK1atUKkydPxvjx4/HMM8+gfv368Pf3R2xsLE6dOgUXFxesWLECfn5+AICUlBQMGjQIw4YNQ61atfTlJc+ePYvY2FjcvXsXAQEBWLVqFZydna386aiwY5EWERERERERERERERERERERkUE4I9k9hXVGsnHjxqF+/fqYM2cOdu3ahT179sDf3x99+vTB6NGjUaVKFX3fkiVLYubMmdi8eTP++OMPHD58GLdv30bx4sXRsGFDPP/883j99dezzLJFlB0WaRERERERERERERERERERERGRzWjbti3a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IqKcsZ/JP/YzRE8mto/5x/bRGDwWjcE8Ej1Z2McYh+2jMZhHYzCPxmAejcE8EhE9GhZpEVG+mM1mfTpTyjvm0Rj3T+VOj47HIhFRztjP5B/7GaInE9vH/GP7aAwei8ZgHomeLOxjjMP20RjMozGYR2Mwj8ZgHomIco9FWkRERERERERERERERERERERERAWIj08QEREREREREREREREREREREREVIBZpERERERERERERERERERERERERFSAWaRERERERERERERERERERERERERUgFmkREREREREREREREREREREREREVIBZpERERERERERERERERERERERERFSAWaRERERERERERERERERERERERERUgFmkREREREREREREREREREREREREVIBZpERERERERERERERERERERERERFSAWaRERERERERERERERERERERERERUgFmkREREREREREREREREREREREREVIBZpERERERERERERERERERERERERFSAWaRERERERERERUaH322+/QSmF69evG/7ezZs3x7Bhwwx/36ioKNSqVcvw9yUiIiIiIiIioqKHRVpERERERERERFRgduzYATs7O3Ts2NHaoRRooVd2Ro4ciY0bN+brPfr06YMuXboYExAREREREREREVkNi7SIiIiIiIiIiKjALF26FEOGDMHmzZtx4cKFB+4rIkhPT8+y/e7duwUVXoFyd3eHj4+PtcMgIiIiIiIiIqJCgEVaRERERERERERUIJKTk7Fy5Uq8+eab6NixI5YtW2bxujaz1U8//YQ6derAyckJW7duRfPmzTF48GAMGzYMvr6+aNeunf47+/btQ926deHq6orGjRvjyJEjAIBTp07BZDJh7969Fv/GnDlzUKZMGZw4cQItWrQAAHh5eUEphT59+uj7mc1mjBo1Ct7e3vD390dUVJTF+yilsHjxYnTq1Amurq6oWrUqduzYgePHj6N58+Zwc3ND48aN8ffff+u/c/9yh3v27EGbNm3g6+uLYsWK4dlnn0VsbGyO+YuKisKnn36K77//HkopKKXw22+/oWXLlhg8eLDFvleuXIGjo6M+c1fZsmUxefJkdO/eHW5ubggMDMSCBQssfuf69evo378/SpQoAU9PT7Rs2RL79+/PMR4iIiIiIiIiIso7FmkREREREREREVGB+N///ocqVaqgcuXK6NmzJz755BOISJb9IiMjMW3aNBw+fBhPPfUUAODTTz+Fo6Mjtm3bhkWLFun7jh07FjNnzsTevXthb2+Pfv36AbhXlNS6dWvExMRYvHdMTAz69OmDMmXK4JtvvgEAHDlyBBcvXsTcuXP1/T799FO4ublh165diI6OxqRJk7B+/XqL95o8eTJ69+6N33//HVWqVMFrr72GgQMHYsyYMdi7dy9EJEvxVGY3b95EWFgYtm7dip07dyIkJAQdOnTAzZs3s91/5MiReOWVV/Dcc8/h4sWLuHjxIho3boz+/fvjyy+/RGpqqr7v8uXLERgYiJYtW+rbZsyYgZo1ayIuLg6RkZF46623LD7Tv/71L8THx+Onn37Cvn37ULt2bbRq1QqJiYk5fgYiIiIiIiIiIsobFmkREREREREREVGBWLp0KXr27AkAeO6553Djxg1s2rQpy36TJk1CmzZtUKFCBXh7ewMAQkJCEB0djcqVK6Ny5cr6vu+99x6effZZVKtWDZGRkdi+fTvu3LkDAOjfvz9WrFihFy/Fxsbi4MGD6Nu3L+zs7PT3LlmyJPz9/VGsWDH9fZ966ilMmDABISEh6N27N+rWravPSqXp27cvXnnlFVSqVAmjR4/GqVOn0KNHD7Rr1w5Vq1bFW2+9hd9++y3HfLRs2RI9e/ZElSpVULVqVXz00UdISUnJNifAveUSXVxc4OTkBH9/f/j7+8PR0REvvvgiAOD777/X9122bBn69OkDpZS+rUmTJoiMjESlSpUwZMgQvPzyy5g9ezYAYOvWrdi9eze++uor1K1bFyEhIfjggw9QvHhxfP311zl+BiIiIiIiIiIiyhsWaRERERERERERkeGOHDmC3bt3o3v37gAAe3t7dOvWDUuXLs2yb926dbNsq1OnTrbvq820BQClSpUCAMTHxwMAunTpAjs7O3z33XcA7hUutWjRAmXLln1ovJnfV3tv7X2z28fPzw8AUKNGDYttd+7cQVJSUrb/xuXLlzFgwACEhISgWLFi8PT0RHJyMs6cOfPQ+DJzdnZGr1698MknnwC4V4z2xx9/WCzfCACNGjXK8vPhw4cBAPv370dycjJ8fHzg7u6u/zl58qTFko1ERERERERERGQMe2sHQERERERERERET56lS5ciPT0dAQEB+jYRgZOTE+bPn28xi5Wbm1uW389uGwA4ODjof9dmjTKbzQAAR0dH9O7dGzExMXjxxRfx5ZdfWixp+CCZ31d7b+19H/RvPyie+4WFheHq1auYO3cuypQpAycnJzRq1Ah3797NVYyZ9e/fH7Vq1cK5c+cQExODli1bokyZMrn+/eTkZJQqVSrbmb+KFy/+yPEQEREREREREdGDsUiLiIiIiIiIiIgMlZ6ejs8++wwzZ85E27ZtLV7r0qULVqxYgTfeeKNA/u3+/fsjNDQUCxcuRHp6ur40IHCviAsAMjIyCuTffpht27Zh4cKF6NChAwDg7NmzSEhIeODvODo6ZhtvjRo1ULduXXz88cf48ssvMX/+/Cz77Ny5M8vPVatWBQDUrl0bly5dgr29fa5mGiMiIiIiIiIiovzhcodERERERERERGSoNWvW4Nq1awgPD0doaKjFn5deeinbJQ+NUrVqVTRs2BCjR49G9+7d4eLior9WpkwZKKWwZs0aXLlyBcnJyQUWR3ZCQkLw+eef4/Dhw9i1axd69OhhEV92ypYtiwMHDuDIkSNISEhAWlqa/lr//v0xbdo0iAi6du2a5Xe3bduG6OhoHD16FAsWLMBXX32Ft956CwDQunVrNGrUCF26dMG6detw6tQpbN++HWPHjsXevXuN/eBERERERERERMQiLSIiIiIiIiIiMtbSpUvRunVriyUNNS+99BL27t2LAwcOFNi/Hx4ejrt376Jfv34W2wMDAzFx4kRERkbCz88PgwcPLrAYsrN06VJcu3YNtWvXRq9evTB06FCULFnygb8zYMAAVK5cGXXr1kWJEiWwbds2/bXu3bvD3t4e3bt3h7Ozc5bfjYiIwN69e/H0009jypQpmDVrFtq1awfg3tKMP/74I5o1a4a+ffuiUqVKePXVV3H69Gn4+fkZ+8GJiIiIiIiIiAhKRMTaQRARERERERERERll8uTJ+Oqrrwq0EKwwOHXqFCpUqIA9e/agdu3aFq+VLVsWw4YNw7Bhw6wTHBERERERERERWbC3dgBERERERERERERGSE5OxqlTpzB//nxMmTLF2uEUmLS0NFy9ehXjxo1Dw4YNsxRoERERERERERFR4cPlDomIiIiIiIiI6IkwePBg1KlTB82bN8+y1OGTZNu2bShVqhT27NmDRYsWWTscIiIiIiIiIiLKBS53SEREREREREREREREREREREREVIA4kxYREREREREREREREREREREREVEBYpEWERERERERERERERERERERERFRAWKRFhERERERERERERERERERERERUQFikRYREREREREREREREREREREREVEBYpEWERERERERERERERERERERERFRAWKRFhERERERERERERERERERERERUQFikRYREREREREREREREREREREREVEBYpEWERERERERERERERERERERERFRAfp/PFTw9gG1NtIAAAAASUVORK5CYII=\n"
          },
          "metadata": {}
        }
      ]
    }
  ],
  "metadata": {
    "accelerator": "GPU",
    "colab": {
      "gpuType": "T4",
      "machine_shape": "hm",
      "provenance": []
    },
    "kernelspec": {
      "display_name": "Python 3",
      "name": "python3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}